检查正则表达式或其他方式的电子邮件字符串
问题描述:
我试过下面的代码,但它给了我不匹配。检查正则表达式或其他方式的电子邮件字符串
re:run("[email protected]", "\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b").
正则表达式我来到这里http://www.regular-expressions.info/email.html
编辑: 下不工作,以
re:run("345345", "\b[0-9]+\b").
如果你们有连接字符串的电子邮件时一个将匹配
re:run("[email protected]", "^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$").
答
看起来你需要不区分大小写匹配?
目前[A-Z0-9._%+-]
(例如)仅匹配大写字符(加数字等)。
一种解决方案是指定[A-Za-z]
。另一种解决方案是在匹配之前将您的电子邮件地址转换为大写字母。
答
我毫不犹豫地回答这个问题,因为我相信它依赖于一个不正确的假设 - 你能确定的电子邮件地址是否有效或不使用正则表达式。有关更多详情,请参阅this question;从短暂的一瞥我会注意到,在你的问题的正则表达式不接受.museum和.рф顶级域名。
这就是说,你需要避开反斜杠。你希望字符串包含反斜杠,但是在Erlang中,反斜线用于字符串内部以便转义各种字符,所以任何文字反斜杠都需要写为\\
。试试这个:
3> re:run("[email protected]", "\\b[a-z0-9._%+-][email protected][a-z0-9.-]+\\.[a-z]{2,4}\\b").
{match,[{0,9}]}
甚至更好,这一点:
8> re:run("[email protected]", "\\b[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-][email protected][a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*\\b").
{match,[{0,9}]}
这是正则表达式used in the HTML 5 standard,修改为使用\\b
而不是^
和$
。
'' 重新:运行( “[email protected]”,“\ B [A-ZA-Z0-9 ._%+ - ] + @ [A-ZA-Z0-9 .-] + \。 [A-Za-z] {2,4} \ b“)。'' - 给我不匹配(( – Yola 2012-07-30 10:06:05