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
フラグが使用された場合、^ は常に入力の始まりにのみマッチするか、(multiline
が true
の場合)最初の行にマッチします"。
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) | 未サポート | 未サポート | 未サポート |