电子邮件验证Javascript RegExp

时间:2012-09-24 11:51:11

标签: javascript regex email-validation

使用此RegExp,我可以轻松检查电子邮件是否有效:

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

但是,对于这样的地址,这只会返回:

example@example.com

我也想接受:

*@example.com

我需要在RegExp上应用哪些更改?

提前致谢

3 个答案:

答案 0 :(得分:3)

要按字面意思回答你的问题,你可以“扩充”你的正则表达式:

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

但这对于电子邮件验证来说是一个糟糕的正则表达式。正则表达式是错误的工具。你为什么insist on doing it this way

答案 1 :(得分:1)

检查电子邮件地址并不是那么简单,参见RFC 822, sec 6.1

可以在http://www.regular-expressions.info/email.html找到一个很好的正则表列表,描述RFC一致性和实用性之间的权衡。

答案 2 :(得分:1)

有两件事:接受*@foo.bar

var expression = /^([\w-\.*]+@([\w-]+\.)+[\w-]{2,4})?$/;//no need to pass it to the RegExp constructor

但是这个表达式接受-@-.--,但是再一次,正则表达式和电子邮件并不是一个好朋友。但根据你的表达方式,这里的版本不太可靠:

var expression = /^[\w-\.\d*]+@[\w\d]+(\.\w{2,4})$/;

但是,有一个表达式可以验证网络上某些有效类型的电子邮件地址。考虑一下,看看为什么正则表达式验证几乎总是要么排除有效输入要么过于宽容