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

Regular expression test not working properly

本文关键字:工作 常工作 测试 不能 正则表达式      更新时间:2023-09-26

我想写一个简单的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 );
}

但由于某种原因,即使我给它'aa aa',它也返回true。我做错了什么?

将正则表达式更改为 ^['w.@]+$ 以匹配整个字符串。如果是aa aa,它将返回true,因为aa将匹配。因此,使用^作为开头来断言字符串的开始位置,使用$作为结尾来断言字符串的结束位置。也不需要转义.,因为点在字符类中没有任何特殊含义。

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'));

您没有锚定正则表达式。对于任何包含字母、数字、下划线、点或@的字符串,它将返回true。

修复:var re = /^['w.@]+$/;