在js中,使用正则表达式验证特殊字符,怎么不好使了?

2024-11-23 00:08:25
推荐回答(2个)
回答(1):

你没有加字符串开始位置和字符串结束位置
所以只要有一个非特殊字符出现,就会匹配成功
对于"!@#a"就会匹配"a"
正确的写法:
/^[\u4e00-\u9fa5\da-zA-Z\-\_]+$/

我觉得像这种验证“不能出现某些字符”的正则,直接匹配那些不能出现的字符比较好。

回答(2):

你写的正则表达式只匹配单字符,只要匹配到一个非特殊字符test就能通过了,只不过实际匹配的项是那个非特殊字符,我觉得你也可以反向测试,
var validChar = /[^\u4e00-\u9fa5\da-zA-Z\-\_]+/
if(!validChar.test(document.form1.elements[i].value))
......