无效的表达式术语'['

问题描述 投票:0回答:2

我写了一个用于验证电子邮件的正则表达式,正则表达式是这样的。但它在'@'部分之后的正则表达式字符串中给出了无效表达式项的错误.Below是正则表达式字符串。

/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;

谢谢

javascript jquery regex
2个回答
0
投票

你的正则表达式工作正常。

你不需要在集合中除了[]之外的char。使用[\w-.],而不是[\w-\.](只是一个优化)。

附加说明

如果你使用var re = new RegExp("...")而不是var re = /.../你需要逃避反斜杠或它不会起作用:

// Works
var re = /^([\w-.]+@([\w-]+\.)+[\w-]{2,4})?$/;
console.log(re.test('[email protected]'));

// Also works
re = new RegExp("^([\\w-.]+@([\\w-]+\\.)+[\\w-]{2,4})?$");
console.log(re.test('[email protected]'));

// Does NOT work
re = new RegExp("^([\w-.]+@([\w-]+\.)+[\w-]{2,4})?$");
console.log(re.test('[email protected]'));

0
投票

正则表达式工作正常。你需要逃避特殊符号。像[\[你可以使用一个函数:

function escapeRegExp(str) {
  return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}
© www.soinside.com 2019 - 2024. All rights reserved.