A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/sticky below:

RegExp.prototype.sticky - JavaScript | MDN

RegExp.prototype.sticky

Baseline Widely available

sticky は RegExp インスタンスのアクセサープロパティで、この正規表現に y フラグが使用されているかどうかを返します。

試してみましょう
const str1 = "table football";
const regex1 = new RegExp("foo", "y");

regex1.lastIndex = 6;

console.log(regex1.sticky);
// Expected output: true

console.log(regex1.test(str1));
// Expected output: true

console.log(regex1.test(str1));
// Expected output: false
解説

RegExp.prototype.sticky の値が true ならば y フラグが使われており(粘着的正規表現)、そうでなければ false になります。y フラグはこの正規表現が対象の文字列を lastIndex プロパティで示されたインデックスからのみ照合を試みることを示します(そしてグローバル正規表現とは異なり、それ以降のインデックスからの照合は試みません)。

sticky の設定アクセサーは undefined です。このプロパティを直接変更することはできません。

粘着的正規表現とグローバル正規表現の両方の場合は、次のようになります。

ただし、exec() メソッドについては、照合に失敗したときの動作が異なります。

exec() メソッドでは、粘着的かつグローバルな正規表現は、粘着的かつグローバルでない正規表現と同じ動作をします。test() は exec() の単純なラッパーなので、test() はグローバルフラグを無視して同様に粘着的な照合を行います。しかし、他にもグローバル正規表現の挙動を特殊化するメソッドがたくさんあるため、 一般的にはグローバルフラグは粘着フラグと直交します。

例 sticky フラグのついた正規表現の使用
const str = "#foo#";
const regex = /foo/y;

regex.lastIndex = 1;
regex.test(str); // true
regex.lastIndex = 5;
regex.test(str); // false (lastIndex は粘着フラグで考慮されます)
regex.lastIndex; // 0 (照合に失敗した後でリセット)
アンカーになる sticky フラグ

Firefox の SpiderMonkey エンジンの一部のバージョンでは ^ 指定に関するバグがあり、 ^ アサーションで始まり、 sticky フラグを使うことで一致しない式を許可していました。このバグは Firefox 3.6 以降で発生し(それ以前は sticky が実装されていてもバグはありませんでした)、2015 年に修正されました。このバグのためか、仕様書では特に注意を促しているという事実があります。

パターンとともに y フラグが使用された場合、 ^ は常に入力の始まりにのみ一致するか、(rer.[[Multiline]] が true の場合)行の先頭に一致するかです。

以下は正しい挙動の例です。

const regex = /^foo/y;
regex.lastIndex = 2;
regex.test("..foo"); // false - インデックス 2 は文字列の先頭ではない

const regex2 = /^foo/my;
regex2.lastIndex = 2;
regex2.test("..foo"); // false - インデックス 2 は文字列または行の先頭ではない
regex2.lastIndex = 2;
regex2.test(".\nfoo"); // true - インデックス 2 は行の先頭
仕様書 ブラウザーの互換性 関連情報

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4