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

JavaScript で否定後読みアサーションをシミュレートするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-26 16:27:13707ブラウズ

How Can I Simulate Negative Lookbehind Assertions in JavaScript?

JavaScript での負の後読み機能の実現

負の後読みアサーションを使用すると、特定の文字セットで始まらない文字列を照合できます。 JavaScript では負の後読みが明示的にサポートされていないにもかかわらず、実行可能な代替手段があります。

2018 年以降、後読みアサーションが ECMAScript 仕様に組み込まれました。

// Positive lookbehind:
(?<=...)

// Negative lookbehind:
(?<!...)

Pre -2018 アプローチ

または、否定的な場合後読みは使用できないため、次のアプローチを検討してください:

  1. 入力文字列を反転します。
  2. 反転した正規表現と照合します。
  3. 結果を反転して再フォーマットします

例:

const reverse = (string) => {
  return string.split('').reverse().join('');
};

const test = (inputStrings, reversedRegex) => {
  inputStrings.map(reverse).forEach((reversedString, idx) => {
    const match = reversedRegex.test(reversedString);
    console.log(
      inputStrings[idx],
      match,
      'token:',
      match ? reverse(reversedRegex.exec(reversedString)[0]) : 'Ø'
    );
  });
};

例 1: 「jim」または「m」の「m」と一致しますが、入っていない"jam":

test(['jim', 'm', 'jam'], /m(?!([abcdefg]))/);

出力:

jim true token: m
m true token: m
jam false token: Ø

例 2: "max-height" と一致するが一致しない"line-height":

test(['max-height', 'line-height'], /thgieh(?!(-enil))/);

出力:

max-height true token: height
line-height false token: Ø

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。