这是一个在大多数正则表达式实现中都能正常工作的正则表达式:
(?<!filename)\.js$
这与.js匹配以.js结尾的字符串,但filename.js除外
Javascript没有后面的正则表达式。有谁能放在一起实现相同结果并可以在javascript中工作的替代正则表达式?
这里有一些想法,但需要帮助功能。
^(?!filename).+\.js 为我工作
^(?!filename).+\.js
经过测试:
可以在正则表达式中找到此正则表达式的正确解释,以匹配不包含单词的字符串?
从JavaScript1.5版开始,可以使用“向前看”功能,并且所有主要浏览器都支持“向前看”功能
更新 以匹配filename2.js和2filename.js,但不匹配filename.js
(^(?!filename\.js$).).+\.js
在以前的版本中,你可以执行以下操作:
^(?:(?!filename\.js$).)*\.js$
这将显式地执行lookbehind表达式的隐式操作:检查字符串中的每个字符,如果lookbehind表达式加上后的正则表达式不匹配,则仅允许该字符匹配。
^ # 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