2013-06-29 62 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

您介意再幫我一次嗎? –