2013-06-29 39 views
1

我想写JavaScript正则表达式找到KEY(页数)下面的Javascript正则表达式捕捉

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; 

请注意,我用[\s\S]更换(.|\n),因为前者不会得到过去其他换行符像\r和一些统一的。 [\s\S]是匹配“任何字符”的标准方式(实际上,在Javascript中,您也可以使用[^](不是没有字符))。

另外请注意m修改这里无关紧要的,因为它不仅影响^$匹配(这两者都是不属于你的正则表达式)如何。

至于表达式,在重复使用每个字符之前,我们先检查一下前面的内容,它不标记||n||的开始。

Working demo.

+0

m.buettner你真棒。 –

+0

特别感谢您的解释和工作演示 –

+0

您介意再帮我一次吗? –