你好,谁来了。
我正在学习JavaScript RegExp规则。我已经写了电子邮件验证模式。但不幸的是,它允许双重" @"在例子中。
请帮助我改进它。
^(?:\s|(?:[a-z]))(?:[a-zA-Z0-9]+.)+@(?:[a-zA-Z])+.[a-z]+\s+
还提供截图:
答案 0 :(得分:5)
您的正则表达式允许第二个@
为.
字符的原因是:
^(?:\s|(?:[a-z]))(?:[a-zA-Z0-9]+.)+@(?:[a-zA-Z])+.[a-z]+\s+
^
它允许任何角色。只需使用\.
将其转义为仅使其为点。
答案 1 :(得分:3)
有一个标准的RFC 5322,带有一个非常复杂的正则表达式
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*
| "(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]
| \\[\x01-\x09\x0b\x0c\x0e-\x7f])*")
@ (?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
| \[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}
(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:
(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]
| \\[\x01-\x09\x0b\x0c\x0e-\x7f])+)
\])
然而,这不是一个非常实际的实现,最常用的标准是RFC 5322女巫匹配今天使用的所有电子邮件地址约99,99%。
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@
(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
对于更精确的正则表达式,您可以选择正则表达式,也可以在顶级lvl域上进行过滤,但是每次添加新域时都需要更新此正则表达式,因为有近无限的顶级lvl域现在不再可用了
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@
(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|
biz|info|mobi|name|aero|asia|jobs|museum)\b
答案 2 :(得分:2)
答案 3 :(得分:0)
/^[a-zA-Z0-9._-]+@[a-z]+.[a-z.]{2,5}$/
您可以尝试这个简单的正则表达式 请参阅:https://referencekiru.wordpress.com/2015/05/28/regular-expressions/