質問:
JavaScript では正規表現の後読みがありません。特定の条件を除いて特定のパターンに一致する方法はありますか?
回答:
ECMAScript 2018 より前では、JavaScript は負の後読みアサーションをネイティブにサポートしていませんでした。別のアプローチは次のとおりです。
^(?:(?!filename\.js$).)*\.js$
説明:
この正規表現は、文字列の各文字を明示的にチェックすることによって後読みをシミュレートします。後読み式 ("filename.js$") とその後に続く残りの正規表現 (".js$") が現在の文字で一致しない場合、その文字は許可されます。
^ # Start of string (?: # Try to match the following: (?! # First assert that we can't match the following: filename\.js # filename.js $ # and end-of-string ) # End of negative lookahead . # Match any character )* # Repeat as needed \.js # Match .js $ # End of string
ただし、その後、より単純な代替手段が登場しました。
^(?!.*filename\.js$).*\.js$
この後者のアプローチは、すべての文字で先読みをチェックしないため、より効率的です。
^ # Start of string (?! # Assert that we can't match the following: .* # any string, filename\.js # followed by filename.js $ # and end-of-string ) # End of negative lookahead .* # Match any string \.js # Match .js $ # End of string
以上が否定先読みは JavaScript の正規表現の後読みを模倣できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。