JavaScript REGEX 负向前瞻混淆

标签 javascript regex regex-lookarounds

好吧,我用 JavaScript 处理一些行,并且想要使用否定前瞻来消除该行(如果它包含特定短语),但我似乎仍然捕获这些行,并且 regexbuddy 和其他人显示它匹配,我不确定为什么

^This (\w+) (\w+) was built in (\d+). (.+?).(?! This car has a salvage title.)$

所以我需要获取一些不同的第二句值,这些值会发生变化以匹配 (.+?)。 我不想要的是该行是否包含对抢救标题的引用

所以

This Honda Accord was built in 1986. This car has 3 accidents. This car has a salvage title.

不应该匹配,因为否定前瞻应该失败

但是

This Honda Accord was built in 1986. This car has 3 accidents.

应该匹配,但我在两者上都得到了匹配。我只是误解了负面的展望还是我错误地格式化了它?

最佳答案

…(?! This car has a salvage title.)$

您已将否定前瞻放在字符串末尾之前。它总是不匹配(即成功)。毕竟这是向前查找,而不是向后查找,并且在字符串末尾查看是没有意义的。

您可能想这样做:

^This (\w+) (\w+) was built in (\d+)\. (?!This car has a salvage title)(.+?)\.$

这里,(?!This car has a salvage title)(.+?) 确实与点之前的句子(准确地说,至少一个字符)匹配,该句子不以短语“这辆车有报废权”。或者,如果您不想在第一句之后的任何地方使用该短语,则使用

^This (\w+) (\w+) was built in (\d+)\. (?!.*?This car has a salvage title)(.+?)\.$
//                                        ^^^

关于JavaScript REGEX 负向前瞻混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25779470/

相关文章:

javascript - Google Charts 注释时间线提示未出现

javascript - 如何使用 jQuery 和 CSS 显示容器

javascript - 为什么我的数组被覆盖了?

java - 在 Java 中使用 Scanner 时在 token 中包含定界符

java - 无法使 Negative Lookahead 正则表达式正确匹配

javascript - 如何改进这个包含基本重复逻辑的 toggleClass 函数?

javascript - 数字范围的正则表达式约束,限制为小数点后 3 位

regex - 如何使用 awk 重复一行?

python - 正则表达式匹配Python中的重复组

java - 正则表达式前瞻和后视 : followed by this or that