ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript 正規表現で負の後読みを実装するにはどうすればよいですか?
JavaScript で負の後読みを実装する方法
JavaScript はネイティブでは負の後読みをサポートしていないため、次の文字列に一致する正規表現の作成が妨げられます。特定の文字で始めないでください。
による解決策後読みアサーション (2018 年以降)
2018 年、JavaScript は後読みアサーションを導入し、正と負の両方の後読みが可能になりました:
たとえば、次の正規表現は「jim」または「m」には「m」文字が含まれていますが、 'jam':
(?<!([abcdefg]))m
2018 年以前の解決策
2018 年以前の回避策の 1 つは、入力文字列を反転し、反転した正規表現と一致させ、その後、入力文字列を反転することでした。一致します。このプロセスは次のように実装できます:
const reverse = s => s.split('').reverse().join(''); const test = (stringToTests, reversedRegexp) => stringToTests .map(reverse) .forEach((s,i) => { const match = reversedRegexp.test(s); console.log(stringToTests[i], match, 'token:', match ? reverse(reversedRegexp.exec(s)[0]) : 'Ø'); });<p><strong>例</strong></p> <p>その使用法を説明するには:</p> <ul><li>で説明した最初の質問については、コンテキストに応じて、次の正規表現は「jim」または「m」の「m」には一致しますが、一致しません。 'jam':</li></ul> <pre class="brush:php;toolbar:false">test(['jim', 'm', 'jam'], /m(?!([abcdefg]))/)
test(['max-height', 'line-height'], /thgieh(?!(-enil))/)
以上がJavaScript 正規表現で負の後読みを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。