我试图让每次出现的字符(d)前面都没有其他几个字符(a,b或c)之一。下面的正则表达式可以工作并返回我想要的字符,但它也会返回它之前的字符(如空格或其他字符)。
var rgx = /(?:[^abc])d/
var string = 'abcd d de cd ad da bd'
您可以对其进行测试here。
通常情况下我会使用负面的背后隐藏,但我在javascript中工作,这似乎是我需要的一个简单的解决方法。我知道有一些在JS中实现lookbehind的解决方法,但是我有兴趣理解为什么这个正则表达式的工作原理。
答案 0 :(得分:1)
您需要使用2个不同的捕获组:
var rgx = /(?:^|[^abc])(d)/;
在Javascript正则表达式引擎中没有lookbehind功能的情况下,从匹配项中单独获取前面的字符。