gpt4 book ai didi

javascript - 通过正则表达式检查合法字符但出现意外结果

转载 作者:行者123 更新时间:2023-11-30 12:29:37 27 4
gpt4 key购买 nike

我已经定义了一些可以合法使用的字符。

var reg= /[-!*() ~{}'<>._a-zA-Z0-9]/g                                            

为了测试正则表达式的正确性,我写了一个测试用例如下:

var arr= ["-", ".", "!", "~", "*", "(", ")", "'", "_","<",">"];  
for(var i=0 ;i < arr.length;i++)
{
console.log( arr[i] +" " + reg.test(arr[i]));
}

但是 console.log() 的输出是 true/false/true/false...

当我输入 reg.test(.);
时也很奇怪输出也是一样的:true/false/true/false。 (迭代)

谁能告诉我原因并给我一个正确的正则表达式。

最佳答案

这是因为当多次使用全局正则表达式时,lastIndex 属性会更新。

MDN:

As with exec() (or in combination with it), test() called multiple times on the same global regular expression instance will advance past the previous match.

因此,您需要删除全局标志。它无论如何都不会影响结果,因为当遇到 第一个 不允许的字符时它仍然返回 false。

关于javascript - 通过正则表达式检查合法字符但出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28167296/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com