問題:
在缺少在正規表示式後向尋找的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中文網其他相關文章!