正则表达式-以特定字符串开头,但不以另一个子字符串结尾

时间:2019-04-05 03:59:58

标签: javascript regex ruby

给出两个字符串s1s2,我试图编写一个正则表达式,该正则表达式将匹配以s1开头但不以s2结尾的字符串>

示例(s1 = TEST,s2 = BAD)

  • TEST-101比赛
  • TEST-SOME-DESC比赛
  • TEST-101-BAD不匹配
  • TEST-SOME-DESC-BAD不匹配

这是我在此示例中尝试的内容,但它不起作用:/ ^ TEST-。*((?! BAD))$ /

2 个答案:

答案 0 :(得分:2)

尝试一下:

/^(?!.+BAD$)TEST-.*/

这与开始匹配,然后继续并拒绝以错误字符串结尾的任何内容,然后与所需的模式匹配。

这里有一个demo通过了所有四个测试(单击底部的“运行测试”以进行验证)。

答案 1 :(得分:-1)

您可以使用startsWithendsWith

let arr = [`TEST-101`, `TEST-SOME-DESC`,`TEST-101-BAD`,`TEST-SOME-DESC-BAD`]

arr.forEach(e=>{
  console.log(e, e.startsWith('TEST') && !e.endsWith('BAD'))
})