2014-09-11 2 views
0

OK Я обрабатываю некоторые строки с помощью 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

+0

Я пробовал их с помощью \. а также все еще не удалось. – user3763307

ответ

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)(.+?)\.$ 
//          ^^^ 
Смежные вопросы