ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript 正規表現で負の後読みをシミュレートするにはどうすればよいですか?

JavaScript 正規表現で負の後読みをシミュレートするにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-14 15:48:11
オリジナル
634 人が閲覧しました

How Can I Simulate Negative Lookbehind in JavaScript Regular Expressions?

JavaScript の負の後読みと同等

特定の文字セットで始まらない文字列と一致する負の後読みは、 では直接サポートされていません。 JavaScript の正規表現。ただし、同様の結果を達成する別のアプローチもあります。

肯定先読みと文字列反転

JavaScript は肯定先読み (?=) をサポートしているため、1 つの方法には次のものが含まれます。

  1. 入力文字列を反転します。
  2. 正の先読みを使用した反転正規表現。
  3. を反転して再フォーマットします。

例:

const reverse = s => s.split('').reverse().join('');
const regexp = /m(?!([abcdefg]))/;

test(['jim', 'm', 'jam'], regexp);

function test(strings, regexp) {
  strings.map(reverse).forEach((s, i) => {
    match = regexp.test(s);
    console.log(strings[i], match, 'Token: ', match ? reverse(regexp.exec(s)[0]) : 'Ø');
  });
}
ログイン後にコピー

結果:

jim true Token: m
m true Token: m
jam false Token: Ø
ログイン後にコピー

後読みアサーションサポート (以来2018)

2018 年に、否定後読みを含む後読みアサーションが ECMAScript 言語仕様の一部になりました。これらは次のように使用できます:

負の後読み:

(?<!...)
ログイン後にコピー

正後読み:

(?<=...)
ログイン後にコピー

例:

「max-height」に一致するが「line-height」には一致しない場合:

regexp = /thgieh(?!(-enil))/;
test(['max-height', 'line-height'], regexp);
ログイン後にコピー

結果:

max-height true Token: height
line-height false Token: Ø
ログイン後にコピー

以上がJavaScript 正規表現で負の後読みをシミュレートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート