Javascript 正则表达式模式捕获

标签 javascript regex

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

最佳答案

问题是 (.|\n)* 可以超出下一个 ||n||。您需要避免这种情况,通常是通过在重复中嵌套否定的前瞻:

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

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

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

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

Working demo.

关于Javascript 正则表达式模式捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17378534/

相关文章:

c# - 如何从句子中所有数字的每个单词中获取第一个字符?

regex - 确定行是否包含 1-4 个特定字符的正则表达式

python - 使用正前瞻或后顾的增强赋值操作的正则表达式

javascript - 如下所示的这段 php 代码有什么问题?

javascript - ngStyle AngularJs 放置变量属性

php - gmaps.js 循环遍历地址并添加标记

java - 正则表达式未提取确切的模式

javascript - 动画 div 水平到垂直

javascript - 如何将 JSON 数据从 html 发送到 javascript 函数

java useDelimeter 拆分 -