【发布时间】:2018-01-25 11:01:18
【问题描述】:
我需要一个带有特殊字符的正则表达式电子邮件验证。
规则:
- 本地部分可能有 2 个或更多字符长度
- 本地部分包含特殊字符 & 可能不会以特殊字符开头和结尾。
- 在@之后只允许 a-z-A-Z0-9
当前正则表达式:
^[a-zA-Z0-9]+([\w\.\'\!\#\$\%\&\*\+\-\/\=\?\^\`\{\|\}\~])+([a-zA-Z0-9])+@(([a-zA-Z0-9\.\-])+.)+([a-zA-Z0-9]{2,8})+$
测试模式:
eee123@eee.eee > TRUE
e#e@eee.eee > TRUE
e#2@eee.eee > TRUE
ee@eee.eee > FALSE
e2@eee.eee > FALSE
#e@eee.eee > FALSE
e#@eee.eee > FALSE
我需要一个将验证为的正则表达式:
eee123@eee.eee > TRUE
e#e@eee.eee > TRUE
e#2@eee.eee > TRUE
ee@eee.eee > TRUE
e2@eee.eee > TRUE
#e@eee.eee > FALSE
e#@eee.eee > FALSE
【问题讨论】:
-
local part contain special character & might not start & end with special character.这个规则与你的例子相矛盾:ee@eee.eee > TRUE e2@eee.eee > TRUE如果应该有一个特殊的字符,那些应该是假的 -
是的,正如你所说,
ee@eee.eee > TRUE, e2@eee.eee > TRUE和e#@eee.eee > FALSE, #e@eee.eee > FALSE。有没有可能 -
您可能应该首先使用
filter_var()验证电子邮件地址,然后使用正则表达式仅检查@之前的部分是否有额外的特殊条件... -
这是一个不错的技巧。但是仅使用正则表达式就可以吗?可能会更好。
-
能否避免特殊字符出现在
@之后。在@之后只允许a-z-A-Z0-9。可以修改
标签: php regex validation