以下是要匹配的示例字符串列表:
这些应匹配:
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
答案 0 :(得分:3)
一个简单的选择是使用否定前瞻来检查该行不以.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$
答案 1 :(得分:2)