使用此 RegExp,我可以轻松检查电子邮件是否有效:
RegExp(/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/);
但是,对于此类地址,这只会返回 true:
example@example.com
我也想接受:
*@example.com
我需要对我的 RegExp 应用哪些更改?
提前致谢
使用此 RegExp,我可以轻松检查电子邮件是否有效:
RegExp(/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/);
但是,对于此类地址,这只会返回 true:
example@example.com
我也想接受:
*@example.com
我需要对我的 RegExp 应用哪些更改?
提前致谢
要从字面上回答您的问题,您可以“增强”您的正则表达式:
RegExp(/^([\w.*-]+@([\w-]+\.)+[\w-]{2,4})?$/);
但对于电子邮件验证来说,这是一个糟糕的正则表达式。正则表达式是错误的工具。你为什么坚持这样做?
检查电子邮件地址并不是那么简单,参见。RFC 822,第 6.1 节。
可以在http://www.regular-expressions.info/email.html找到一个很好的正则表达式列表,描述 RFC 一致性和实用性之间的权衡。
几件事:接受*@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})$/;
不过,有一个表达式可以验证网络上某处的所有有效类型的电子邮件地址。调查一下,看看为什么正则表达式验证几乎总是会排除有效输入或过于宽容