Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Regexp有效电子邮件检查_Php_Regex_Validation_Email_Email Validation - Fatal编程技术网

Php Regexp有效电子邮件检查

Php Regexp有效电子邮件检查,php,regex,validation,email,email-validation,Php,Regex,Validation,Email,Email Validation,我尝试使用以下regexp代码检查电子邮件是否有效 /[0-9A-Za-z-_.]{1,64}[\@][0-9a-zA-Z\-]{1,63}[\.][a-zA-Z\-]{2,24}/ 但在测试中,我看到像test-@gmail.com或test-.@gmail.com或test-.@gmail.com或test.@gmail.com或之类的无效电子邮件。test@gmail.com标记为有效 我认为没有一封有效的电子邮件是开始或结束时,而不是像--或__u;或-。或者。- 我能做些什么使它更好

我尝试使用以下regexp代码检查电子邮件是否有效

/[0-9A-Za-z-_.]{1,64}[\@][0-9a-zA-Z\-]{1,63}[\.][a-zA-Z\-]{2,24}/
但在测试中,我看到像
test-@gmail.com
test-.@gmail.com
test-.@gmail.com
test.@gmail.com
之类的无效电子邮件。test@gmail.com
标记为有效

我认为没有一封有效的电子邮件是开始或结束时,而不是像--或__u;或-。或者。-


我能做些什么使它更好?

为什么不使用

请参见此处的过滤器定义

验证该值是否为有效的电子邮件地址

通常,这会根据RFC中的语法验证电子邮件地址 822,除了注释和空格折叠和 不支持无点域名

为什么不使用

请参见此处的过滤器定义

验证该值是否为有效的电子邮件地址

通常,这会根据RFC中的语法验证电子邮件地址 822,除了注释和空格折叠和 不支持无点域名

试试这个:

^(|(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6})$
另一种方式:

^(|(([A-Za-z0-9]+)|([A-Za-z0-9]+)|([A-Za-z0-9]+(\.[_a-z0-9-]+)+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6})$
不匹配:

test-.@gmail.com
test.@gmail.com
test__@gmail.com
__--.test@gmail.com
john__doe@gmail.com
john..doe@xuse.de
john--doe@xuse.de
test_test@gmail.com
匹配:

12test21@gmail.com
1.test@gmail.com
test.test@gmail.com
试试这个:

^(|(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6})$
另一种方式:

^(|(([A-Za-z0-9]+)|([A-Za-z0-9]+)|([A-Za-z0-9]+(\.[_a-z0-9-]+)+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6})$
不匹配:

test-.@gmail.com
test.@gmail.com
test__@gmail.com
__--.test@gmail.com
john__doe@gmail.com
john..doe@xuse.de
john--doe@xuse.de
test_test@gmail.com
匹配:

12test21@gmail.com
1.test@gmail.com
test.test@gmail.com


“我能做些什么使它更好?”---你不能用regexp验证电子邮件。你的大多数例子都是有效的电子邮件。@AlexHowansky你是怎么得出这个观点的?你有没有尝试过通过outlook.com或gmail.com注册这些电子邮件?@zerkms这是什么答案?你还有什么好主意;-)“你是如何得出这个观点的?”见第6.1节。“我能做些什么使它更好?”---你不能用regexp验证电子邮件。你的大多数例子都是有效的电子邮件。@AlexHowansky你是如何得出这个观点的?你有没有尝试过通过outlook.com或gmail.com注册这些电子邮件?@zerkms这是什么答案?你还有什么好主意;-)“你是怎么得出这个观点的?”见第6.1节。嗨,谢谢你的回答。在普通的PHP项目中,我会说这是最好的答案,但在我们的情况下是不可用的。我搜索一个合适的正则表达式代码来使用。我知道有时候本机函数不够严格。我想也许“注释、空格折叠和无点域名不受支持的例外情况”部分可以满足您的需求。还是个不错的选择:)@Mann87为什么它不可用?你的问题中没有任何限制。@AlexHowansky是的,我在问题中忘记了。很抱歉由于代码结构和php版本的原因,它不可用。所以我真的需要一个exp.@Mann87
filter\u var()
从10年前的v5.2.0开始就在PHP中使用——如果您使用的是比这个版本旧的版本,那么您需要担心的问题要严重得多……您好,谢谢您的回答。在普通的PHP项目中,我会说这是最好的答案,但在我们的情况下是不可用的。我搜索一个合适的正则表达式代码来使用。我知道有时候本机函数不够严格。我想也许“注释、空格折叠和无点域名不受支持的例外情况”部分可以满足您的需求。还是个不错的选择:)@Mann87为什么它不可用?你的问题中没有任何限制。@AlexHowansky是的,我在问题中忘记了。很抱歉由于代码结构和php版本的原因,它不可用。所以我真的需要一个exp.@Mann87
filter\u var()
从10年前的v5.2.0开始就在PHP中使用——如果您使用的是比这个版本更旧的版本,那么您需要担心的问题要严重得多……感谢我尝试过这个版本,它比我以前使用的版本工作得更好。非常感谢你,约翰__doe@gmail.com,约翰。。doe@xuse.de还有约翰--doe@xuse.de仍然有效,但也是一封注册无效的电子邮件。@Mann87您希望它不带
-
对吗?我用另一种方式更新了我的问题,请检查一下,谢谢,我试过这个,它比我以前用过的好。非常感谢你,约翰__doe@gmail.com,约翰。。doe@xuse.de还有约翰--doe@xuse.de仍然有效,但也是一封注册无效的电子邮件。@Mann87您希望它不带
-
对吗?我用另一种方式更新了我的问题,请检查一下