RegExp.prototype.sticky

sticky プロパティは検索が寛容(sticky)どうかを表します。(この正規表現の lastIndex プロパティによって示されるインデックスからのみの文字列を検索します)。 sticky は正規表現オブジェクトごとの読み取り専用のプロパティです。

RegExp.prototype.sticky のプロパテイ属性
書込可能 不可
列挙可能 不可
設定可能

説明

sticky の値は Boolean です。"y" フラグが使われていたら、true です。そうでなければ、false です。"y" フラグはターゲット文字列においてこの正規表現のlastIndexプロパティによって示されるインデックスからのみマッチすることを示します(それ以降のインデックスからマッチしようとしません)。

このプロパティを直接変更することはできません。

例: "sticky" フラグとともに正規表現を使う

var str = '#foo#';
var regex = /foo/y;

regex.lastIndex = 1;
regex.test(str); // true
regex.lastIndex = 5;
regex.test(str); // false (lastIndex is taken into account with sticky flag)
regex.lastIndex; // 0 (reset after match failure)

アンカーされた sticky フラグ

この振る舞いは ES2015 で定義され、以前の Firefox 実装と異なります: "パターンとともに y フラグが使用された場合、^ は常に入力の始まりにのみマッチするか、(multilinetrue の場合)最初の行にマッチします"。

var regex = /^foo/y;
regex.lastIndex = 2; // disallows to match at the beginning of the string
regex.test("..foo"); // false

var regex2 = /^foo/my;
regex2.lastIndex = 2;
regex2.test("..foo"); // false
regex2.lastIndex = 2;
regex2.test(".\nfoo"); // true

仕様

仕様 状況 コメント
ECMAScript 2015 (6th Edition, ECMA-262)
RegExp.prototype.sticky の定義
標準 初期定義。
ECMAScript 2017 Draft (ECMA-262)
RegExp.prototype.sticky の定義
ドラフト  

ブラウザ実装状況

機能 Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
基本サポート 未サポート (有) 3.0 (1.9) 未サポート 未サポート 未サポート
プロトタイプアクセスプロパティ 未サポート (有) 38 (38) 未サポート 未サポート 未サポート
ES2015 のアンカーされた sticky(y) フラグ動作 未サポート (有) 44 (44) 未サポート 未サポート 未サポート
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート 未サポート 未サポート 1.0 (1.9) 未サポート 未サポート 未サポート
プロトタイプアクセスプロパティ 未サポート 未サポート 38.0 (38) 未サポート 未サポート 未サポート
ES2015 のアンカーされた sticky(y) フラグ動作 未サポート 未サポート 44.0 (44) 未サポート 未サポート 未サポート

関連情報

ドキュメントのタグと貢献者

 最終更新者: YuichiNukiyama,