尝试使用此正则表达式来验证用户名,这就是我所拥有的:
var goodUsername = /[a-zA-Z0-9_]/g;
console.log(goodUsername.test("HELO $"));
但是,我是否$
在那里它返回true。不知道为什么。
我基本上只想要用户名中的字母,数字和_以及
答案 0 :(得分:1)
你需要添加锚..
/^[a-zA-Z0-9_]+$/;
Anchors有助于进行精确匹配。 ^
线锚的开始,$
线锚的结束。而且你需要重复一次或多次char类,否则它会匹配一个只包含一个字符的字符串。
答案 1 :(得分:1)
您使用的RegEx搜索主题字符串中的任何匹配项。在您的情况下, HELO 符合条件。如果您想将条件应用于整个字符串,则应使用
定义字符串begin和endvar goodUsername = /^[a-zA-Z0-9_]+$/;
console.log(goodUsername.test("HELO $"));//false
答案 2 :(得分:0)
您可以在列表中搜索<strong>不中的任何字符(&#34;否定character set&#34;):
var badUsername = /[^a-zA-Z0-9_]/;
console.log(!badUsername.test("HELO $"));
或更简单
var badUsername = /\W/;
因为\W
被定义为
匹配基本拉丁字母表中不是单词字符的任何字符。相当于
[^A-Za-z0-9_]
。
如果你喜欢做正面匹配,使用其他答案建议的锚点,你可以使用\w
缩短你的正则表达式:
var goodUsername = /^\w+$/;