JavaScript REGEX负面看待混乱

时间:2014-09-11 05:06:49

标签: javascript regex negative-lookahead

好吧我用JavaScript处理一些行并希望使用负向前看以消除该行,如果它包含一个特定的短语但我似乎仍然抓住行和regexbuddy其他人显示它匹配,我不知道为什么

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

所以我需要获取一些不同的第二个句子值,以便与(。+?)相匹配。 我不想要的是如果该行包含对救助标题的引用

SO

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.

应该匹配,但我在两者上都有匹配。我只是误解了前方的负面看法,还是我错误地格式化了?

1 个答案:

答案 0 :(得分:1)

…(?! 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)(.+?)\.$
//                                        ^^^