正则表达式 - 以特定字符串开头但不以另一个子字符串结尾
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式 - 以特定字符串开头但不以另一个子字符串结尾相关的知识,希望对你有一定的参考价值。
鉴于两个字符串s1
和s2
,我正在尝试编写一个正则表达式,它将匹配以s1
开头但不以s2
结尾的字符串
示例(s1 = TEST,s2 = BAD)
- TEST-101匹配
- TEST-SOME-DESC匹配
- TEST-101-BAD不应该匹配
- TEST-SOME-DESC-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'))
})
以上是关于正则表达式 - 以特定字符串开头但不以另一个子字符串结尾的主要内容,如果未能解决你的问题,请参考以下文章