首页  >  文章  >  web前端  >  负向先行可以模仿 JavaScript 中的正则表达式后向查找吗?

负向先行可以模仿 JavaScript 中的正则表达式后向查找吗?

Susan Sarandon
Susan Sarandon原创
2024-11-12 21:30:02567浏览

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