我今天大约六个小时的大部分时间都在研究正则表达式。对于我的生活,我无法弄清楚。我尝试了一百种不同的方法,但无济于事。非常感谢任何帮助!
基本规则:
1 - 在地址部分(@符号之前)中排除这些字符:"()<>@,;:\[]*&^%$#!{}/"
2 - 地址可以包含“。”,但不能包含两行。
我对第一条规则有一个优雅的解决方案,但是,规则二是杀了我!这是我到目前为止所拥有的。 (我只包括@符号的部分以保持简单)。此外,请务必注意,此正则表达式正在JavaScript中使用,因此不允许使用条件IF。
/^[^()<>@,;:\\[\]*&^%$#!{}//]+$/
答案 0 :(得分:1)
首先,我建议你总是选择你想要允许的角色而不是相反的角色,你永远不会知道你可能错过哪些危险角色。
其次,这是我经常用于验证电子邮件的正则表达式,它完美无缺。希望它可以帮助你。
/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$/i
答案 1 :(得分:1)
规则2
/^(?:\.?[^.])+\.?$/
表示任意数量的序列(可选点后跟强制非点),末尾带有可选点。
考虑四个两个字符序列
xx
匹配为两个非点字符。.x
匹配为可选点,后跟非点。x.
匹配为非点,后跟可选的点。..
不匹配,因为第一个点后没有非点。 关于电子邮件地址要记住的一点是,点可以出现在棘手的地方
"..@"@.example.com
是有效的电子邮件地址。
"..@"
是完全有效的引用本地部分制作,而.example.com
只是说example.com
的一种方式,但是针对根DNS解析而不是使用主机搜索路径。如果example.com
位于主机搜索路径上,则example.com.myintranet.com
可能会解析为myintranet.com
,但.example.com
始终会解析为绝对主机example.com
。
答案 2 :(得分:1)
首先,根据您的规格:
^(?![\s\S]*\.\.)[^()<>@,;:\\[\]*&^%$#!{}/]@.*$
这只是你的正则表达式,(?!.*\.\.)
加在前面。这是一个负向前瞻,如果字符串中的任何地方有任何两个连续的句点,则不匹配。
正确匹配的电子邮件地址要困难得多。