1

我想编写一个 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;
4

1 回答 1

0

问题是(.|\n)*能超越下||n||。您需要避免这种情况,通常通过在重复中嵌套负前瞻:

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

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

另请注意,m修饰符在这里无关紧要,因为它只影响方式^$匹配(两者都不是您的正则表达式的一部分)。

至于表达式,在使用重复中的每个字符之前,我们先检查一下,它没有标记 a 的开始||n||

工作演示。

于 2013-06-29T09:40:13.550 回答