如何反转我的RegEx结果

时间:2017-06-11 19:42:40

标签: javascript regex regex-negation

我有以下RegEx

.*\.(test|spec|es5|es6)\.(js|bundle\.js)

使用以下测试输入

bunle.spec.js
my.main.js
test.es6.js
te.es5.js
file.test.js
abc.js
ee.ff.abc.js
eeee.ffff.abc.js

https://regex101.com/r/8BZyA0/2

如何翻转我的RegEx条件,以便选择my.main.jsabc.jsee.ff.abc.jseeee.ffff.abc.js 代替?

由于

1 个答案:

答案 0 :(得分:2)

您需要将您所拥有的模式的第一部分转换为否定前瞻并将其锚定在字符串的开头,并且 - 根据评论中的反馈 - 您需要以{{1}结束字符串}或managedElements - 在最后添加.js锚点:

.bundle.js

请参阅Android Services

<强>详情:

  • $ - 字符串的开头
  • ^(?!.*\.(?:test|spec|es[56])\.(?:(?:bundle\.)?js$)).*\.(?:bu‌​ndle\.)?js$ - 如果在除了换行符之外的0 +字符之后(由于^),则字符串包含{{1}随后是(?!.*\.(?:test|spec|es[56])\.(?:(?:bundle\.)?js$)).*.test,然后是spec,然后是es5es6。字符串(.
  • js - 除了换行符之外的0 +字符
  • bundle.js - 一个点
  • $ - 一个可选的非捕获组,匹配1或0次.*子串
  • \. - 文字子串(?:bu‌​ndle\.)?
  • bundle. - 在字符串的末尾。