Javascript 精确单词的正则表达式在';It’句子中是连续的

Javascript 精确单词的正则表达式在';It’句子中是连续的,javascript,regex,Javascript,Regex,因此,我试图在给定文本中精确匹配单词“test”的所有实例,并使用以下正则表达式: /(^|\s)test(\s|\.|$|,|!|\?|;|¿|¡)/gi 当文本类似于“这是一个测试。测试进行得如何?测试”时,它就起作用了。然而,当你有两个或更多连续的“测试”时,它就不起作用了 即: 如何使正则表达式与连续单词一起工作 缺少第二个测试,因为在匹配第一个测试模式时使用了空格字符;您可以将第二个括号更改为向前看,这样它就不会使用字符: var regex=/(?:^ |\s)测试(?=\s |

因此,我试图在给定文本中精确匹配单词“test”的所有实例,并使用以下正则表达式:

/(^|\s)test(\s|\.|$|,|!|\?|;|¿|¡)/gi
当文本类似于“这是一个测试。测试进行得如何?测试”时,它就起作用了。然而,当你有两个或更多连续的“测试”时,它就不起作用了

即:


如何使正则表达式与连续单词一起工作

缺少第二个
测试
,因为在匹配第一个
测试
模式时使用了空格字符;您可以将第二个括号更改为向前看,这样它就不会使用字符:

var regex=/(?:^ |\s)测试(?=\s |$$,|!| | | | | | | |?)/gi;

log(“test.match(regex))我不确定这是否是您要找的,但是这个正则表达式:

(?<=\W)test(?=\W)

(?此操作的目的是什么?您想知道
test
word的计数吗?
/(^ |\s)test(?=\s | \.$,|!| \?| |?)/gi
它不返回
[“test”,“test”
。它返回
[“test”,“test”]
(注意空格).那么,您实际期望的返回值是多少呢?您没有匹配单词
test
,而是匹配单词
test
以及前面的字符和后面的字符。我想您正在寻找
/\btest\b/gi
,这就成功了,谢谢。我刚刚尝试了这个,但不幸的是它说正则表达式无效。我刚刚编辑了我的答案,显然JS中不支持lookbehind断言。但是你已经有了一个处理所选答案的断言,所以一切都很好。
(?<=\W)test(?=\W)