javascript 正则表达 逗号可以通过验证

使用可能記号:【! # $ % & = + - / * ~ ^ | @ . _ ?】

var newPassword =",";
var reg = /^[a-zA-Z0-9!#$%&=+-/*~^|@._?]+$/;
...
reg.test(newPassword) //竟然是true

应该是逗号也不可以的
着急等
哪里有问题啊

阅读 2.8k
4 个回答

正则中的中括号中的用法

clipboard.png

正则的[]中只有 -和^是特殊语义的。

var newPassword =",";
var reg = /^[a-zA-Z0-9!#$%&=+\-/*~\^|@._?]+$/;
reg.test(newPassword)

你的之所以为真,是因为 区间符-连接了 +和/ ,而逗号正好在这个区间内(很巧吧)。

只是对中括号中有特殊语义的 -字符和 ^字符还原字符本意就行。
clipboard.png

你也可以使用正则铁路图可视化查看^[a-zA-Z0-9!#$%&=+-/*~^|@._?]+$正则匹配到的内容:

clipboard.png

clipboard.png

通过可视化,您可以看到'+' - '/',这是什么意思呢,我们分别来获取charCode:

'+'.charCodeAt() // 43
'/'.charCodeAt() // 47

','.charCodeAt()的charCode为44,在数字范围内,所以说test为true。

特殊符号都需要 转义的

推荐问题