使用正则表达式或其他方式检查字符串的电子邮件

时间:2012-07-30 09:42:29

标签: regex erlang email-validation

我尝试了以下代码,但它给了我无与伦比的效果。

re:run("qw@qc.com", "\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b").

regexp我来到这里http://www.regular-expressions.info/email.html

EDITED: 接下来不起作用

re:run("345345", "\b[0-9]+\b").

如果您在字符串中收到电子邮件,那么该字符串将匹配

re:run("qw@qc.com", "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$").

2 个答案:

答案 0 :(得分:5)

我对回答这个问题犹豫不决,因为我认为它依赖于错误的假设 - 您可以使用正则表达式确定电子邮件地址是否有效。有关详细信息,请参阅this question;从短暂的一瞥我注意到你的问题中的正则表达式不接受.museum.рф顶级域名。

那就是说,你需要逃避反斜杠。您希望字符串包含反斜杠,但在Erlang中,在字符串内部使用反斜杠来转义各种字符,因此任何文字反斜杠都需要写为\\。试试这个:

3> re:run("qw@qc.com", "\\b[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}\\b").
{match,[{0,9}]}

甚至更好,这个:

8> re:run("qw@qc.com", "\\b[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*\\b").
{match,[{0,9}]}

这是正则表达式used in the HTML 5 standard,已修改为使用\\b而不是^$

答案 1 :(得分:0)

看起来您需要不区分大小写的匹配?

目前[A-Z0-9._%+-](例如)仅匹配大写字符(加上数字等)。

一种解决方案是指定[A-Za-z]。另一种解决方案是在匹配之前将您的电子邮件地址转换为大写。