匹配双字的javascript正则表达式每次都会给出不同的结果

匹配双字的javascript正则表达式每次都会给出不同的结果,javascript,regex,Javascript,Regex,这是我的浏览器控制台的输出。这个正则表达式检查双_单词,查找单词(包含1个或多个字母的字符串)后跟空格和相同单词的出现情况 var reg=/([A-Za-z\u00C0-\u1FFF\u2800-\uFFFD]+)\s+\1/gi; undefined reg.test("sdfs sdsdf") true reg.test("sdfs sdsdf") false 结果是正确的交替时间,为什么会出现这种奇怪的行为?这种行为是由于使用了全局标志。移除它 var reg=/([A-Za-z\u0

这是我的浏览器控制台的输出。这个正则表达式检查双_单词,查找单词(包含1个或多个字母的字符串)后跟空格和相同单词的出现情况

var reg=/([A-Za-z\u00C0-\u1FFF\u2800-\uFFFD]+)\s+\1/gi;
undefined
reg.test("sdfs sdsdf")
true
reg.test("sdfs sdsdf")
false

结果是正确的交替时间,为什么会出现这种奇怪的行为?

这种行为是由于使用了
全局
标志。移除它

var reg=/([A-Za-z\u00C0-\u1FFF\u2800-\uFFFD]+)\s+\1/;
使用
g
会在对
test
exec
方法的多个调用中记住正则表达式状态(
lastIndex
值)

阅读描述部分。

可能重复的