我想编写一个Javascript正则表达式来查找任何给定单词的KEY(页码) 例如,在下面的段落中
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 :(得分:0)
问题是(.|\n)*
可以超越下一个||n||
。你需要避免这种情况,通常是在重复中嵌套一个负向前瞻:
/\|\|(\d+)(?=\|\|(?:(?!\|\|\d+\|\|)[\s\S])*wonder)/ig;
请注意,我将(.|\n)
替换为[\s\S]
,因为前者不会超过其他换行符,如\r
和某些Unicode换行符。 [\s\S]
是匹配"任何角色的标准方式" (事实上,在Javascript中你也可以使用[^]
(不是没有字符))。
另请注意,m
修饰符在此处无关紧要,因为它仅影响^
和$
匹配的方式(两者都不属于您的正则表达式)。
至于表达式,在重复使用每个字符之前,我们先用前瞻检查,它没有标记||n||
的开头。