为什么这个正则表达式返回前面的字符
Why does this regular expression return the preceding character?
我正在尝试获取一个字符(d)的每一个出现,该字符前面没有其他几个字符(a、b或c)中的一个。下面的正则表达式可以工作并返回我想要的字符,但它也会返回紧挨在它前面的字符(如空格或其他字符)。
var rgx = /(?:[^abc])d/
var string = 'abcd d de cd ad da bd'
你可以在这里测试。
通常情况下,我会使用否定的查找,但我使用的是javascript,这似乎是一个简单的解决方法。我知道在JS中实现lookbacking有一些变通方法,但我有兴趣理解为什么这个正则表达式会这样工作。
您需要使用两个不同的捕获组:
var rgx = /(?:^|[^abc])(d)/;
在Javascript正则表达式引擎中没有查找功能的情况下,将前面的字符从匹配中单独获取。
RegEx演示
相关文章:
- 如何使用Javascript在给定的句子中找到大写单词并在其前面添加一个字符
- 如何获得前面有“”的字符;add_”;
- Regex查找前面没有特定字符的字符
- 如何完成此循环?连接前面的两个字符
- 为什么这个正则表达式返回前面的字符
- 如何全局替换不在前面加[字符]的字符
- 正则表达式以匹配单词,除非它们前面有字符
- 当前面的数字或前面字符的组合未知时提取字符串
- 将 n 个字符从字符串前面移到末尾
- 前面有特定字符串时的匹配字符
- 负向后看:匹配一个子字符串's不在一组字符的前面
- Regex匹配前面或后面没有其他字符的精确单词
- 检查字符串前面是否有特定字符
- 在Javascript中,如何在字符串中找到一个字符,并将其前面的所有字符放入变量中
- 光标前面的字符
- Javascript代码检查特殊字符,并在其前面添加双斜杠
- 替换前面或后面没有相同字符的字符
- 前面有两个或多个特殊字符的正则表达式
- RegEx-允许字母,数字,只有特殊字符逗号-但没有前面或后面的逗号
- 匹配前面没有'转义字符的双引号