给出两个字符串s1
和s2
,我试图编写一个正则表达式,该正则表达式将匹配以s1
开头但不以s2
结尾的字符串>
示例(s1 = TEST,s2 = BAD)
这是我在此示例中尝试的内容,但它不起作用:/ ^ TEST-。*((?! BAD))$ /
答案 0 :(得分:2)
尝试一下:
/^(?!.+BAD$)TEST-.*/
这与开始匹配,然后继续并拒绝以错误字符串结尾的任何内容,然后与所需的模式匹配。
这里有一个demo通过了所有四个测试(单击底部的“运行测试”以进行验证)。
答案 1 :(得分:-1)
您可以使用startsWith
和endsWith
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'))
})