0

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

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

但是,对于此类地址,这只会返回 true:

example@example.com

我也想接受:

*@example.com

我需要对我的 RegExp 应用哪些更改?

提前致谢

4

3 回答 3

3

要从字面上回答您的问题,您可以“增强”您的正则表达式:

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

但对于电子邮件验证来说,这是一个糟糕的正则表达式。正则表达式是错误的工具。你为什么坚持这样做

于 2012-09-24T11:53:09.477 回答
1

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

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

于 2012-09-24T12:00:56.870 回答
1

几件事:接受*@foo.bar

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

但是这个表达式确实 accept -@-.--,但话又说回来,正则表达式和电子邮件并不是很好的朋友。但是根据您的表达,这是一个不太可靠的版本:

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

不过,有一个表达式可以验证网络上某处的所有有效类型的电子邮件地址。调查一下,看看为什么正则表达式验证几乎总是会排除有效输入或过于宽容

于 2012-09-24T12:03:33.867 回答