我写了一个用于验证电子邮件的正则表达式,正则表达式是这样的。但它在'@'部分之后的正则表达式字符串中给出了无效表达式项的错误.Below是正则表达式字符串。
/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
谢谢
你的正则表达式工作正常。
你不需要在集合中除了[
或]
之外的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]'));
正则表达式工作正常。你需要逃避特殊符号。像[
到\[
你可以使用一个函数:
function escapeRegExp(str) {
return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}