排除带有javascript正则表达式词边界的完整词

时间:2018-10-06 11:30:28

标签: javascript regex

我希望排除包含特定单词/短语的匹配项,例如,如何仅匹配第1行和第3行? \b字词边界无法像我预期的那样直观地工作...

foo.js            # match
foo_test.js       # do not match
foo.ts            # match
fun_tset.js       # match
fun_tset_test.ts  # do not match

更新,我对缺少详细信息表示歉意。我昨晚上班时间很晚:/

所以我要排除的是在扩展名前以_test显式结尾的字符串。刚开始我有类似[^_test]的东西,但是也排除了“那些字符的任何组合(例如第3行)

2 个答案:

答案 0 :(得分:1)

正则表达式:^(?!.*_test\.).*$

工作示例:https://regex101.com/r/HdGom7/1

工作原理:使用否定的超前查询来检查字符串中是否存在_test.,如果不匹配。

答案 1 :(得分:0)

添加到@pretzelhammer 的回答中,您似乎想要获取以 ts 或 js 结尾的文件名字符串:

^(?!.*_test)(.*\.[jt]s)

第一个括号中的表达式是一个否定前瞻,排除任何带有 _test 的字符串,第二个括号匹配任何以句点结尾的字符串,后跟 [jt](j 或 t),后跟来自s