Javascript-正则表达式和懒散

Javascript-正则表达式和懒散,javascript,regex,Javascript,Regex,我需要一个正则表达式,它将匹配包含子字符串“abc”的字符串,而不是子字符串“abcdef”或“abcghi”。我能找到的最佳解决方案是: /^.*abc(?!def|ghi).*$/i 但是,此字符串与以下字符串匹配: xxxabcxabcdefxx 我的正则表达式被“abcx”字符串的幻影所愚弄,它包含的“abc”后面没有被禁止的后缀。 我尝试过使用“+”和“?”修饰符,但没有效果 我想我可以通过使用不带通配符的正则表达式来解决这个问题,并将匹配的字符串与完整的字符串进行比较,但我发现这

我需要一个正则表达式,它将匹配包含子字符串“abc”的字符串,而不是子字符串“abcdef”或“abcghi”。我能找到的最佳解决方案是:

/^.*abc(?!def|ghi).*$/i
但是,此字符串与以下字符串匹配:

xxxabcxabcdefxx
我的正则表达式被“abcx”字符串的幻影所愚弄,它包含的“abc”后面没有被禁止的后缀。 我尝试过使用“+”和“?”修饰符,但没有效果


我想我可以通过使用不带通配符的正则表达式来解决这个问题,并将匹配的字符串与完整的字符串进行比较,但我发现这个解决方案似乎有点。。已修补。

为什么不搜索不包含字符串abcdef和abcghi的字符串:

.*(abcdef|abcghi).*

并排除这些?

为什么不搜索不包含字符串abcdef和abcghi的字符串:

.*(abcdef|abcghi).*
并排除这些?

var a='xxxabcxabcdefxx';
如果(/abc(?:def | ghi)/g.test(a))
console.log(/^.*(abc(?:def | ghi)).*/g.exec(a))
var a='xxxabcxabcdefxx';
如果(/abc(?:def | ghi)/g.test(a))

console.log(/^.*(abc(?:def | ghi)).*/g.exec(a))
对整个字符串应用前瞻<代码>/^(?。*abc(?:def | ghi)).*abc.*$/这似乎做得很好,谢谢。对整个字符串应用前瞻<代码>/^(?。*abc(?:def | ghi)).*abc.*$/这似乎做得很好,谢谢。