JavaScript の正規表現後読み代替手段
問題:
JavaScript はネイティブ メソッドを提供しません正規表現の後読み用。したがって、他の実装では効果的に機能する次の正規表現は、JavaScript では失敗します。
(?<!filename)\.js$
この正規表現は、文字列の末尾にある拡張子「.js」と一致することを目的としていますが、それが一致する場合に限ります。が前にない"filename.js."
解決策:
JavaScript で正規表現の後読みをシミュレートする 1 つのアプローチには、ヘルパー関数の使用が含まれます。ただし、より単純な代替正規表現を使用すると、目的の結果が得られます。
^(?:(?!filename.js$).)*.js$
説明:
この正規表現は、文字列内の各文字が一致することを検証するために否定先読みを使用します。 「filename.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$
この正規表現は、文字列全体に「filename.js」を含めてはいけないことを主張し、その後、任意の文字列に一致します。 「.js」で終わる文字列
以上がJavaScript で正規表現の後読み機能を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。