我尝试了以下代码,但它给了我无与伦比的效果。
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}$").
答案 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]
。另一种解决方案是在匹配之前将您的电子邮件地址转换为大写。