2014-09-11 34 views
0

好的我正在處理一些JavaScript代碼的行,並且希望使用負面預覽消除行,如果它包含特定的短語,但我似乎仍然抓住行和regexbuddy和其他人顯示匹配而且我不知道爲什麼JavaScript REGEX負面展望混亂

^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. 

應該匹配,但我得到兩個匹配。我只是誤解了未來的負面看法,還是我對它進行了錯誤的格式化?

+0

不確定它是否與問題有關,但你需要轉義你想匹配的'.'字符。 – Barmar 2014-09-11 05:09:32

+0

我試過用\。並且仍然失敗。 – user3763307 2014-09-11 05:10:42

回答

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