首頁  >  文章  >  web前端  >  負向先行可以模仿 JavaScript 中的正規表示式後向尋找嗎?

負向先行可以模仿 JavaScript 中的正規表示式後向尋找嗎?

Susan Sarandon
Susan Sarandon原創
2024-11-12 21:30:02522瀏覽

Can Negative Lookahead Mimic Regex Lookbehind in JavaScript?

JavaScript 中的負向前瞻:正則表達式後向查找的替代方案

問題:

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn