我试图获取前面没有其他几个字符(a、b 或 c)之一的字符 (d) 的每次出现。下面的正则表达式可以工作并返回我想要的字符,但它也返回紧邻其之前的字符(例如空格或其他字符)。
var rgx = /(?:[^abc])d/
var string = 'abcd d de cd ad da bd'
你可以测试一下here .
通常我会使用负向后查找,但我正在使用 javascript,这似乎是满足我需要的简单解决方法。我知道有一些解决方法可以在 JS 中实现lookbehind,但我有兴趣了解为什么这个正则表达式会这样工作。
最佳答案
您需要使用 2 个不同的捕获组:
var rgx = /(?:^|[^abc])(d)/;
在 Javascript 正则表达式引擎中没有后向功能的情况下,从匹配中单独获取前一个字符。
关于javascript - 为什么这个正则表达式会返回前面的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28633140/