鉴于两个字符串s1
和s2
,我正在尝试编写一个正则表达式,它将匹配以s1
开头但不以s2
结尾的字符串
示例(s1 = TEST,s2 = BAD)
这是我为这个例子尝试但它不起作用:/^TEST-.*((??BAD))$/
试试这个:
/^(?!.+BAD$)TEST-.*/
这匹配开始,继续并拒绝任何以坏字符串结尾的内容,然后匹配所需的模式。
这是一个通过所有四个测试的demo(点击底部的“RUN TESTS”进行验证)。
你可以使用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'))
})