以下是要匹配的示例字符串列表:
这些应该匹配:
hello.js test.hello.js test.js.js test.js.hello.js test.js.test.js.test.js.dss.js test.js.dss.js test.js.js.js.js.dummy.js
这些不应该匹配:
fun.css test.js fun.test.js test.test.js test.js.test.js hell.cs test.test.js
以下是要匹配的示例字符串列表:
这些应该匹配:
hello.js
test.hello.js
test.js.js
test.js.hello.js
test.js.test.js.test.js.dss.js
test.js.dss.js
test.js.js.js.js.dummy.js
这些不应该匹配:
fun.css
test.js
fun.test.js
test.test.js
test.js.test.js
hell.cs
test.test.js
一个简单的选择是使用否定的前瞻来检查该行是否以 结尾.test.js
:
^(?!.*\.test\.js$).*\.js$
那个不包括test.js
,这是一种特殊情况,但您可以使用^(?!(?:^|.*\.)test\.js$).*\.js$
它来绕过它(或其他类似选项)。
工作示例:http ://www.rubular.com/r/UVvRZMcnjl
如果您的风格支持lookbehinds(JavaScript 和旧的 Ruby 不支持,但 Ruby 1.9.2 支持),您可以使用:
^.*(?<!^test|\.test)\.js$
由于问题标签已从javascript更改为ruby ,因此请使用简单的lookbehind:
.*(?<!test).js$
在此处查看实际操作:http ://rubular.com/r/yVH2xfsRqw