我正在尝试编写一个简单的RegExp来验证登录名:
function _validateLogin( login ) {
//This should allow for [a-zA-Z0-9_] as well as '.' and '@'
//Spaces are not allowed
var re = /[\w\.@]+/;
return re.test( login );
}
但由于某种原因,即使我给它true
,它也会返回'aa aa'
。
我究竟做错了什么?
答案 0 :(得分:1)
将正则表达式更改为 ^[\w.@]+$
以匹配整个字符串。我的情况aa aa
它将返回true,因为aa
将匹配。因此,在字符串开头的断言位置开头使用^
,在字符串末尾的断言位置使用$
。此外,不需要转义.
,因为dot在字符类中没有任何特殊含义。
function _validateLogin(login) {
//This should allow for [a-zA-z0-9_] as well as '.' and '@'
//Spaces are not allowed
var re = /^[\w.@]+$/;
return re.test(login);
}
console.log(_validateLogin('aa aa'));
console.log(_validateLogin('aaaa'));

答案 1 :(得分:1)
你没有锚定正则表达式。对于包含字母,数字,下划线,点或任何位置符号的任何字符串,它将返回true。
修复:var re = /^[\w.@]+$/;