Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript正则表达式模式捕获_Javascript_Regex - Fatal编程技术网

Javascript正则表达式模式捕获

Javascript正则表达式模式捕获,javascript,regex,Javascript,Regex,我想编写一个Javascript正则表达式来查找任何给定单词的键(页码) 例如,在下面的段落中 Key for Chota = 1 Key for Seven = 1 & 2 Key for wonder =3 (就像发现所有页面上都有一个单词一样) 我写了下面的表达式,但它不能正常工作 /(?:\|\|)(\d+)(?=\|\|)(?=(.|\n)*wonder)/img; 问题是(.|\n)*可能会超出下一个|n |。您需要避免这种情况,通常是通过在重复中嵌套一个负前瞻: /

我想编写一个Javascript正则表达式来查找任何给定单词的键(页码) 例如,在下面的段落中

Key for Chota = 1
Key for Seven = 1 & 2
Key for wonder =3
(就像发现所有页面上都有一个单词一样)



我写了下面的表达式,但它不能正常工作

/(?:\|\|)(\d+)(?=\|\|)(?=(.|\n)*wonder)/img;
问题是
(.|\n)*
可能会超出下一个
|n |
。您需要避免这种情况,通常是通过在重复中嵌套一个负前瞻:

/\|\|(\d+)(?=\|\|(?:(?!\|\|\d+\|\|)[\s\S])*wonder)/ig;
请注意,我将
(.|\n)
替换为
[\s\s]
,因为前者不会超过其他换行字符,如
\r
和一些Unicode字符
[\s\s]
是匹配“任意字符”的标准方法(事实上,在Javascript中,您也可以使用
[^]
(而不是无字符))

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

至于表达式,在使用重复中的每个字符之前,我们先进行前瞻性检查,确保它没有标记
|n| |
的开始


您不需要正则表达式。请给我们一个html示例,显示匹配时要返回的密钥。@DerekHenderson什么html?m.buettner你太棒了。特别感谢你的解释和工作演示你介意再帮我一次吗?在同一个示例中,是否也可以执行以下操作?我还想捕获搜索词周围的2个词(在右边和左边)。我有一个用于此的工作正则表达式(?:[^\\.\s\r\n]*[\s\r\n]+{0,2}(?:[^\s\r\n]*)想知道(?:[^\s\r\n]+[^\.\s\r\n]*){0,2}现在我想结合这两个正则表达式来获得页码和周围的文本ex.3,我想知道你怎么做
/\|\|(\d+)(?=\|\|(?:(?!\|\|\d+\|\|)[\s\S])*wonder)/ig;