2013-06-29 3 views
1

Я хочу написать Javascript Регулярное выражение для поиска KEY (Номер страницы) для любого заданного слова Например, в пункте нижеJavascript Regex Pattern Capture

Key for Chota = 1 
Key for Seven = 1 & 2 
Key for wonder =3 

(Ее, как найти, который все страницы имеют слово на нем)


||1|| 
Jam Jam jambura jadu tu sikh le aisa 
Chota Bheem and Kisna Seven 
||2|| 
One Two Three Bla Bla Bla 
Nine Eight Seven Laa Laa Laa 
||3|| 
twinkle twinkle little star 
how I wonder what you are 

я написал следующее выражение, но он не работает правильно

/(?:\|\|)(\d+)(?=\|\|)(?=(.|\n)*wonder)/img; 
+0

Вы не хотите регулярных выражений. Пожалуйста, дайте нам образец вашего html, который показывает ключ, который должен быть возвращен, когда есть совпадение. –

+0

@DerekHenderson какой HTML? –

ответ

0

Проблема заключается в том, что (.|\n)* может выйти за пределы следующего ||n||. Вы должны избегать, что, как правило, гнездятся отрицательный предпросмотр в повторении:

/\|\|(\d+)(?=\|\|(?:(?!\|\|\d+\|\|)[\s\S])*wonder)/ig; 

Обратите внимание, что я заменил (.|\n) с [\s\S], потому что прежний не будет пройти другие символы конца строки, как \r и некоторые из них Unicode. [\s\S] - это стандартный способ сопоставить «любой символ» (на самом деле, в Javascript вы также можете использовать [^] (не символ)).

Также обратите внимание, что модификатор m здесь неуместна, так как это влияет только на ^ и $ матча (оба из которых не являются частью вашего регулярного выражения).

Что касается выражения, перед употреблением каждого символа в повторении мы проверяем с помощью lookahead, чтобы он не отмечал начало ||n||.

Working demo.

+0

m.buettner Ты потрясающий. –

+0

Особая благодарность за объяснение и работу Демо-версия –

+0

Не могли бы вы помочь мне еще раз? –