gpt4 book ai didi

javascript regex - 看看后面的替代方法?

转载 作者:IT王子 更新时间:2023-10-29 02:37:48 24 4
gpt4 key购买 nike

这是一个在大多数正则表达式实现中都能正常工作的正则表达式:

(?<!filename)\.js$

这与 .js 匹配以 .js 结尾的字符串,除了 filename.js

Javascript 没有正则表达式回顾。有没有人能够组合一个替代的正则表达式来实现相同的结果并在 javascript 中工作?

这里有一些想法,但需要辅助函数。我希望只用正则表达式来实现它: http://blog.stevenlevithan.com/archives/mimic-lookbehind-javascript

最佳答案

编辑:从 ECMAScript 2018 开始,lookbehind assertions (even unbounded) are supported natively .

在以前的版本中,您可以这样做:

^(?:(?!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 regex - 看看后面的替代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7376238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com