Php 正则表达式问题电子邮件测试
我对下面的模式有一些问题:Php 正则表达式问题电子邮件测试,php,regex,email,Php,Regex,Email,我对下面的模式有一些问题: /([A-Z0-9]+[A-Z0-9\.\_\+\-]*){3,64}@(([A-Z0-9]+([-][A-Z0-9])*){2,}\.)+([A-Z0-9]+([-][A-Z0-9])*){2,}/i 它与电子邮件地址匹配,我对此规则有问题: [A-Z0-9\.\_\+\-]* 如果我删除星号,它会工作,但我希望此字符为0或更多。我对它进行了测试,它可以工作,但在preg_match_all(PHP)上无法工作 谢谢为什么不使用PHPs 没有好的正则表达式来验证
/([A-Z0-9]+[A-Z0-9\.\_\+\-]*){3,64}@(([A-Z0-9]+([-][A-Z0-9])*){2,}\.)+([A-Z0-9]+([-][A-Z0-9])*){2,}/i
它与电子邮件地址匹配,我对此规则有问题:
[A-Z0-9\.\_\+\-]*
如果我删除星号,它会工作,但我希望此字符为0或更多。我对它进行了测试,它可以工作,但在preg_match_all(PHP)上无法工作
谢谢为什么不使用PHPs
没有好的正则表达式来验证电子邮件地址。如果您绝对必须使用正则表达式,那么可以看看,尽管这也不是一个完美的度量
编辑:经过一些挖掘,我发现了
Mailparse是解析的扩展
以及处理电子邮件。信息技术
可以处理»RFC 822和»RFC 2045
(MIME)兼容消息
Mailparse是基于流的,这意味着
它不会在内存中保存副本
它处理的文件的数量——事实就是如此
交易时非常节省资源
有大量的信息
为什么不使用PHPs
没有好的正则表达式来验证电子邮件地址。如果您绝对必须使用正则表达式,那么可以看看,尽管这也不是一个完美的度量
编辑:经过一些挖掘,我发现了
Mailparse是解析的扩展
以及处理电子邮件。信息技术
可以处理»RFC 822和»RFC 2045
(MIME)兼容消息
Mailparse是基于流的,这意味着
它不会在内存中保存副本
它处理的文件的数量——事实就是如此
交易时非常节省资源
有大量的信息
试试这个正则表达式:
/^[A-Z0-9][A-Z0-9\.\_\+\-]{3,64}@([A-Z0-9][-A-Z0-9]*\.)+[A-Z0-9]{2,}$/i
但正如@Russell Dias所说,你不应该在电子邮件中使用正则表达式。试试这个正则表达式:
/^[A-Z0-9][A-Z0-9\.\_\+\-]{3,64}@([A-Z0-9][-A-Z0-9]*\.)+[A-Z0-9]{2,}$/i
但正如@Russell Dias所说,您不应该在电子邮件中使用正则表达式。您在整个组之后有数量修饰符:
([A-Z0-9]+[A-Z0-9\.\_\+\-]*){3,64}
因此,这将需要至少3个字母字符和类似的内容:
a5@gmail.com
不起作用,但这:
a_uuuuuuuuuuuuuuuuuuuuuuu@gmail.com
我来做这项工作。最好找到一个经过良好测试的正则表达式
此外,您没有起始分隔符和结束分隔符,因此类似的内容将通过:
&^$@#&$^@#&aaa5a55a55a@gmail.comADA;'DROP TABLE :)
在整个组之后有数量修改器:
([A-Z0-9]+[A-Z0-9\.\_\+\-]*){3,64}
因此,这将需要至少3个字母字符和类似的内容:
a5@gmail.com
不起作用,但这:
a_uuuuuuuuuuuuuuuuuuuuuuu@gmail.com
我来做这项工作。最好找到一个经过良好测试的正则表达式
此外,您没有起始分隔符和结束分隔符,因此类似的内容将通过:
&^$@#&$^@#&aaa5a55a55a@gmail.comADA;'DROP TABLE :)
首先,这方面有大量可用的资源。快速搜索“email validation regex”会产生大量结果。。。包括 其次,问题不在
*
字符中。问题出在整个街区
([A-Z0-9]+[A-Z0-9\.\_\+\-]*){3,64}
看看那是怎么回事。它基本上是说匹配尽可能多的字母数字,然后匹配尽可能多的字母数字与其他字符,然后重复至少3次,最多64次。可能有很多角色
相反,您可以:
([A-Z0-9][A-Z0-9\.\_\+\-]{2,63})
这最多会导致与64个字符的电子邮件匹配
哦,还有
还有很多其他资源可用于验证电子邮件地址(包括)。进行一些搜索,看看流行的框架是如何做到这一点的。首先,这方面有很多可用的资源。快速搜索“email validation regex”会产生大量结果。。。包括 其次,问题不在
*
字符中。问题出在整个街区
([A-Z0-9]+[A-Z0-9\.\_\+\-]*){3,64}
看看那是怎么回事。它基本上是说匹配尽可能多的字母数字,然后匹配尽可能多的字母数字与其他字符,然后重复至少3次,最多64次。可能有很多角色
相反,您可以:
([A-Z0-9][A-Z0-9\.\_\+\-]{2,63})
这最多会导致与64个字符的电子邮件匹配
哦,还有
还有很多其他资源可用于验证电子邮件地址(包括)。进行一些搜索,看看流行的框架是如何做到的…虽然我同意Russel Dias的观点,但我相信你的问题在于整个模块:
([A-Z0-9]+[A-Z0-9\.\\\+\-]*){3,64}
基本上你是说,你想要
- 字母或数字,1次或多次
- 字母或数字,0次或更多次
- 在3到64次之间重复上述步骤
- 虽然我同意Russel Dias的观点,但我相信你的问题在于整个街区:
([A-Z0-9]+[A-Z0-9\.\\\+\-]*){3,64}
基本上你是说,你想要
- 字母或数字,1次或多次
- 字母或数字,0次或更多次
- 在3到64次之间重复上述步骤
[A-Z0-9\.\\+\-]*
尝试[-A-Z0-9.\+]*
(乐趣)(推荐)作为参考,在角色类中,您不必执行大部分正在执行的转义操作。不要用[A-Z0-9\.\\+\-]*
试试[-A-Z0-9.\+]*
(有趣)啊。谢谢你分享,戈登。感谢分享Gordon。数量修改器检查整个组,可以是aaa、555、a12、fg8、f7ysf87s、8dfs9df。。。。这是所有电子邮件的工作问题在明星。如果我删除它可以工作,但使用star它无法验证所有电子邮件我已经重新编辑了样本,忘记了0-9,没有使用uu显示我的意思数量修改器检查整个组,可以是aaa、555、a12、fg8、f7ysf87s、8dfs9df。。。。这是所有电子邮件的工作问题在明星。如果我删除它可以工作,但是使用star它无法验证所有电子邮件我已经重新编辑了示例,忘记了0-9,没有用于显示我的意思它用于提取而不是验证当你可以在正则表达式中添加括号时,这里是3对。它用于提取而不是验证当你可以在正则表达式中添加括号时,这里是3对。