正则表达式测试不能正常工作

时间:2015-10-11 18:09:26

标签: javascript regex

我正在尝试编写一个简单的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'。 我究竟做错了什么?

2 个答案:

答案 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.@]+$/;