【问题标题】:JavaScript REGEX negative look ahead confusionJavaScript REGEX 负前瞻混乱
【发布时间】:2014-09-11 05:06:48
【问题描述】:

好的,我用 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.

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

【问题讨论】:

  • 不确定是否与问题有关,但您需要转义要按字面匹配的. 字符。
  • 我已经尝试使用 \.也失败了。

标签: javascript regex negative-lookahead


【解决方案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 car has a salvage title”开头。或者,如果您不想在第一句之后的任何地方使用该短语,则使用

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多