前端小白
最近在写一个用户名校验的正则,不能包含数字以及一些特殊符号.
代码如下图所示(之所以不是代码,是因为 segmentfault会有转义).
如图所示的正则竟然会匹配到大写字母,不知道是为什么.后来删删减减,只剩下 下面的代码,也可以匹配到大写字母,在火狐和Chrome已测试过;
想请教一下各位哥哥姐姐.
var nameReg =/[!-_]/g;
var str="gGFDSFSD!-_";
str.match(nameReg)
火狐结果如下:
Chrome结果如下
谢谢大家!
前端小白
最近在写一个用户名校验的正则,不能包含数字以及一些特殊符号.
代码如下图所示(之所以不是代码,是因为 segmentfault会有转义).
如图所示的正则竟然会匹配到大写字母,不知道是为什么.后来删删减减,只剩下 下面的代码,也可以匹配到大写字母,在火狐和Chrome已测试过;
想请教一下各位哥哥姐姐.
var nameReg =/[!-_]/g;
var str="gGFDSFSD!-_";
str.match(nameReg)
火狐结果如下:
Chrome结果如下
谢谢大家!
var nameReg = /[0-9.$#!<>+-_]/;
var str = "abc!-_";
if (nameReg.test(str)) throw new Error("请输入正确的姓名");
else callback();
10 回答11.4k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.9k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
/[!-_]/g ,正则中的 - 被解析为范围,即从 ! 到 _ , 类似于a-z,0-9这种,! 对应的ascii码值为33,_ 对应的ascii值为95,即ascii值在33~95之间的字符均会被匹配上, 这就是为什么大写英文字母全部会被匹配上,而小写英文字母不会被匹配。
如何不想将 - 解析成一个范围,使用转义字符 即可。
即:nameReg = /[!\-_]/g;