我需要一个正则表达式,它匹配包含子字符串" abc"的字符串,但不是子字符串" abcdef"或" abcghi"。我能找到的最佳解决方案是:
/^.*abc(?!def|ghi).*$/i
但是,这个wronlgy匹配以下字符串:
xxxabcxabcdefxx
我的正则表达式被" abcx"的幻象愚弄了。字符串,女巫包含" abc"后面没有禁用的后缀。 我尝试过使用" +"和"?"修饰语无济于事。
我想我可以通过使用没有通配符的正则表达式,并将匹配的字符串与完整字符串进行比较来解决这个问题,但我发现这个解决方案似乎有点......修补了。
答案 0 :(得分:0)
为什么不搜索不包含字符串abcdef和abcghi的字符串:
.*(abcdef|abcghi).*
并排除那些?
答案 1 :(得分:0)
var a = 'xxxabcxabcdefxx';
if (/abc(?:def|ghi)/g.test(a))
console.log( /^.*(abc(?:def|ghi)).*/g.exec(a))