PHP Regex:检测电子邮件地址中的多个句点、下划线等


PHP Regex: Detect multiple periods, underscores, etc. in email address

我有一个正则表达式,它将GREAT与以下电子邮件相匹配email@example.com,但无法与之匹敌email.this.one@example.com.奇怪的是,有点像this.1.b@yahoo.com工作非常完美。我已经使用regex101.com来测试我的表达式,它们应该匹配,但当我在WAMP服务器上实际运行它时,它们不匹配!

/'s((('w)+'.)?)+(('w)+)@/

有人能告诉我我缺了什么吗???我的意思是,我故意在表达式的其余部分之前匹配一个空格,因为我最近读到一个电子邮件地址实际上可以包含任何键盘字符,除了一个以上的连续句点-当然,我知道它只检测@符号之前匹配的其他句点前面的字母数字字符,但这不是重点。

您将需要做大量工作来验证任何可能存在的电子邮件。

更好的选择是通过发送电子邮件并进行确认来验证电子邮件。而足以验证的是,电子邮件中包含一个@符号。

你想走正则表达式的方式,不错过任何可能输入的电子邮件吗?以下是完整的符合RFC-822的正则表达式:

(?:(?:'r'n)?[ 't])*(?:(?:(?:[^()<>@,;:''".'['] '000-'031]+(?:(?:(?:'r'n)?[ 't]
)+|'Z|(?=['["()<>@,;:''".'[']]))|"(?:[^'"'r'']|''.|(?:(?:'r'n)?[ 't]))*"(?:(?:
'r'n)?[ 't])*)(?:'.(?:(?:'r'n)?[ 't])*(?:[^()<>@,;:''".'['] '000-'031]+(?:(?:(
?:'r'n)?[ 't])+|'Z|(?=['["()<>@,;:''".'[']]))|"(?:[^'"'r'']|''.|(?:(?:'r'n)?[ 
't]))*"(?:(?:'r'n)?[ 't])*))*@(?:(?:'r'n)?[ 't])*(?:[^()<>@,;:''".'['] '000-'0
31]+(?:(?:(?:'r'n)?[ 't])+|'Z|(?=['["()<>@,;:''".'[']]))|'[([^'[']'r'']|''.)*'
](?:(?:'r'n)?[ 't])*)(?:'.(?:(?:'r'n)?[ 't])*(?:[^()<>@,;:''".'['] '000-'031]+
(?:(?:(?:'r'n)?[ 't])+|'Z|(?=['["()<>@,;:''".'[']]))|'[([^'[']'r'']|''.)*'](?:
(?:'r'n)?[ 't])*))*|(?:[^()<>@,;:''".'['] '000-'031]+(?:(?:(?:'r'n)?[ 't])+|'Z
|(?=['["()<>@,;:''".'[']]))|"(?:[^'"'r'']|''.|(?:(?:'r'n)?[ 't]))*"(?:(?:'r'n)
?[ 't])*)*'<(?:(?:'r'n)?[ 't])*(?:@(?:[^()<>@,;:''".'['] '000-'031]+(?:(?:(?:'
r'n)?[ 't])+|'Z|(?=['["()<>@,;:''".'[']]))|'[([^'[']'r'']|''.)*'](?:(?:'r'n)?[
 't])*)(?:'.(?:(?:'r'n)?[ 't])*(?:[^()<>@,;:''".'['] '000-'031]+(?:(?:(?:'r'n)
?[ 't])+|'Z|(?=['["()<>@,;:''".'[']]))|'[([^'[']'r'']|''.)*'](?:(?:'r'n)?[ 't]
)*))*(?:,@(?:(?:'r'n)?[ 't])*(?:[^()<>@,;:''".'['] '000-'031]+(?:(?:(?:'r'n)?[
 't])+|'Z|(?=['["()<>@,;:''".'[']]))|'[([^'[']'r'']|''.)*'](?:(?:'r'n)?[ 't])*
)(?:'.(?:(?:'r'n)?[ 't])*(?:[^()<>@,;:''".'['] '000-'031]+(?:(?:(?:'r'n)?[ 't]
)+|'Z|(?=['["()<>@,;:''".'[']]))|'[([^'[']'r'']|''.)*'](?:(?:'r'n)?[ 't])*))*)
*:(?:(?:'r'n)?[ 't])*)?(?:[^()<>@,;:''".'['] '000-'031]+(?:(?:(?:'r'n)?[ 't])+
|'Z|(?=['["()<>@,;:''".'[']]))|"(?:[^'"'r'']|''.|(?:(?:'r'n)?[ 't]))*"(?:(?:'r
'n)?[ 't])*)(?:'.(?:(?:'r'n)?[ 't])*(?:[^()<>@,;:''".'['] '000-'031]+(?:(?:(?:
'r'n)?[ 't])+|'Z|(?=['["()<>@,;:''".'[']]))|"(?:[^'"'r'']|''.|(?:(?:'r'n)?[ 't
]))*"(?:(?:'r'n)?[ 't])*))*@(?:(?:'r'n)?[ 't])*(?:[^()<>@,;:''".'['] '000-'031
]+(?:(?:(?:'r'n)?[ 't])+|'Z|(?=['["()<>@,;:''".'[']]))|'[([^'[']'r'']|''.)*'](
?:(?:'r'n)?[ 't])*)(?:'.(?:(?:'r'n)?[ 't])*(?:[^()<>@,;:''".'['] '000-'031]+(?
:(?:(?:'r'n)?[ 't])+|'Z|(?=['["()<>@,;:''".'[']]))|'[([^'[']'r'']|''.)*'](?:(?
:'r'n)?[ 't])*))*'>(?:(?:'r'n)?[ 't])*)|(?:[^()<>@,;:''".'['] '000-'031]+(?:(?
:(?:'r'n)?[ 't])+|'Z|(?=['["()<>@,;:''".'[']]))|"(?:[^'"'r'']|''.|(?:(?:'r'n)?
[ 't]))*"(?:(?:'r'n)?[ 't])*)*:(?:(?:'r'n)?[ 't])*(?:(?:(?:[^()<>@,;:''".'['] 
'000-'031]+(?:(?:(?:'r'n)?[ 't])+|'Z|(?=['["()<>@,;:''".'[']]))|"(?:[^'"'r'']|
''.|(?:(?:'r'n)?[ 't]))*"(?:(?:'r'n)?[ 't])*)(?:'.(?:(?:'r'n)?[ 't])*(?:[^()<>
@,;:''".'['] '000-'031]+(?:(?:(?:'r'n)?[ 't])+|'Z|(?=['["()<>@,;:''".'[']]))|"
(?:[^'"'r'']|''.|(?:(?:'r'n)?[ 't]))*"(?:(?:'r'n)?[ 't])*))*@(?:(?:'r'n)?[ 't]
)*(?:[^()<>@,;:''".'['] '000-'031]+(?:(?:(?:'r'n)?[ 't])+|'Z|(?=['["()<>@,;:''
".'[']]))|'[([^'[']'r'']|''.)*'](?:(?:'r'n)?[ 't])*)(?:'.(?:(?:'r'n)?[ 't])*(?
:[^()<>@,;:''".'['] '000-'031]+(?:(?:(?:'r'n)?[ 't])+|'Z|(?=['["()<>@,;:''".'[
']]))|'[([^'[']'r'']|''.)*'](?:(?:'r'n)?[ 't])*))*|(?:[^()<>@,;:''".'['] '000-
'031]+(?:(?:(?:'r'n)?[ 't])+|'Z|(?=['["()<>@,;:''".'[']]))|"(?:[^'"'r'']|''.|(
?:(?:'r'n)?[ 't]))*"(?:(?:'r'n)?[ 't])*)*'<(?:(?:'r'n)?[ 't])*(?:@(?:[^()<>@,;
:''".'['] '000-'031]+(?:(?:(?:'r'n)?[ 't])+|'Z|(?=['["()<>@,;:''".'[']]))|'[([
^'[']'r'']|''.)*'](?:(?:'r'n)?[ 't])*)(?:'.(?:(?:'r'n)?[ 't])*(?:[^()<>@,;:''"
.'['] '000-'031]+(?:(?:(?:'r'n)?[ 't])+|'Z|(?=['["()<>@,;:''".'[']]))|'[([^'['
]'r'']|''.)*'](?:(?:'r'n)?[ 't])*))*(?:,@(?:(?:'r'n)?[ 't])*(?:[^()<>@,;:''".'
['] '000-'031]+(?:(?:(?:'r'n)?[ 't])+|'Z|(?=['["()<>@,;:''".'[']]))|'[([^'[']'
r'']|''.)*'](?:(?:'r'n)?[ 't])*)(?:'.(?:(?:'r'n)?[ 't])*(?:[^()<>@,;:''".'['] 
'000-'031]+(?:(?:(?:'r'n)?[ 't])+|'Z|(?=['["()<>@,;:''".'[']]))|'[([^'[']'r'']
|''.)*'](?:(?:'r'n)?[ 't])*))*)*:(?:(?:'r'n)?[ 't])*)?(?:[^()<>@,;:''".'['] '0
00-'031]+(?:(?:(?:'r'n)?[ 't])+|'Z|(?=['["()<>@,;:''".'[']]))|"(?:[^'"'r'']|''
.|(?:(?:'r'n)?[ 't]))*"(?:(?:'r'n)?[ 't])*)(?:'.(?:(?:'r'n)?[ 't])*(?:[^()<>@,
;:''".'['] '000-'031]+(?:(?:(?:'r'n)?[ 't])+|'Z|(?=['["()<>@,;:''".'[']]))|"(?
:[^'"'r'']|''.|(?:(?:'r'n)?[ 't]))*"(?:(?:'r'n)?[ 't])*))*@(?:(?:'r'n)?[ 't])*
(?:[^()<>@,;:''".'['] '000-'031]+(?:(?:(?:'r'n)?[ 't])+|'Z|(?=['["()<>@,;:''".
'[']]))|'[([^'[']'r'']|''.)*'](?:(?:'r'n)?[ 't])*)(?:'.(?:(?:'r'n)?[ 't])*(?:[
^()<>@,;:''".'['] '000-'031]+(?:(?:(?:'r'n)?[ 't])+|'Z|(?=['["()<>@,;:''".'[']
]))|'[([^'[']'r'']|''.)*'](?:(?:'r'n)?[ 't])*))*'>(?:(?:'r'n)?[ 't])*)(?:,'s*(
?:(?:[^()<>@,;:''".'['] '000-'031]+(?:(?:(?:'r'n)?[ 't])+|'Z|(?=['["()<>@,;:''
".'[']]))|"(?:[^'"'r'']|''.|(?:(?:'r'n)?[ 't]))*"(?:(?:'r'n)?[ 't])*)(?:'.(?:(
?:'r'n)?[ 't])*(?:[^()<>@,;:''".'['] '000-'031]+(?:(?:(?:'r'n)?[ 't])+|'Z|(?=[
'["()<>@,;:''".'[']]))|"(?:[^'"'r'']|''.|(?:(?:'r'n)?[ 't]))*"(?:(?:'r'n)?[ 't
])*))*@(?:(?:'r'n)?[ 't])*(?:[^()<>@,;:''".'['] '000-'031]+(?:(?:(?:'r'n)?[ 't
])+|'Z|(?=['["()<>@,;:''".'[']]))|'[([^'[']'r'']|''.)*'](?:(?:'r'n)?[ 't])*)(?
:'.(?:(?:'r'n)?[ 't])*(?:[^()<>@,;:''".'['] '000-'031]+(?:(?:(?:'r'n)?[ 't])+|
'Z|(?=['["()<>@,;:''".'[']]))|'[([^'[']'r'']|''.)*'](?:(?:'r'n)?[ 't])*))*|(?:
[^()<>@,;:''".'['] '000-'031]+(?:(?:(?:'r'n)?[ 't])+|'Z|(?=['["()<>@,;:''".'['
]]))|"(?:[^'"'r'']|''.|(?:(?:'r'n)?[ 't]))*"(?:(?:'r'n)?[ 't])*)*'<(?:(?:'r'n)
?[ 't])*(?:@(?:[^()<>@,;:''".'['] '000-'031]+(?:(?:(?:'r'n)?[ 't])+|'Z|(?=['["
()<>@,;:''".'[']]))|'[([^'[']'r'']|''.)*'](?:(?:'r'n)?[ 't])*)(?:'.(?:(?:'r'n)
?[ 't])*(?:[^()<>@,;:''".'['] '000-'031]+(?:(?:(?:'r'n)?[ 't])+|'Z|(?=['["()<>
@,;:''".'[']]))|'[([^'[']'r'']|''.)*'](?:(?:'r'n)?[ 't])*))*(?:,@(?:(?:'r'n)?[
 't])*(?:[^()<>@,;:''".'['] '000-'031]+(?:(?:(?:'r'n)?[ 't])+|'Z|(?=['["()<>@,
;:''".'[']]))|'[([^'[']'r'']|''.)*'](?:(?:'r'n)?[ 't])*)(?:'.(?:(?:'r'n)?[ 't]
)*(?:[^()<>@,;:''".'['] '000-'031]+(?:(?:(?:'r'n)?[ 't])+|'Z|(?=['["()<>@,;:''
".'[']]))|'[([^'[']'r'']|''.)*'](?:(?:'r'n)?[ 't])*))*)*:(?:(?:'r'n)?[ 't])*)?
(?:[^()<>@,;:''".'['] '000-'031]+(?:(?:(?:'r'n)?[ 't])+|'Z|(?=['["()<>@,;:''".
'[']]))|"(?:[^'"'r'']|''.|(?:(?:'r'n)?[ 't]))*"(?:(?:'r'n)?[ 't])*)(?:'.(?:(?:
'r'n)?[ 't])*(?:[^()<>@,;:''".'['] '000-'031]+(?:(?:(?:'r'n)?[ 't])+|'Z|(?=['[
"()<>@,;:''".'[']]))|"(?:[^'"'r'']|''.|(?:(?:'r'n)?[ 't]))*"(?:(?:'r'n)?[ 't])
*))*@(?:(?:'r'n)?[ 't])*(?:[^()<>@,;:''".'['] '000-'031]+(?:(?:(?:'r'n)?[ 't])
+|'Z|(?=['["()<>@,;:''".'[']]))|'[([^'[']'r'']|''.)*'](?:(?:'r'n)?[ 't])*)(?:'
.(?:(?:'r'n)?[ 't])*(?:[^()<>@,;:''".'['] '000-'031]+(?:(?:(?:'r'n)?[ 't])+|'Z
|(?=['["()<>@,;:''".'[']]))|'[([^'[']'r'']|''.)*'](?:(?:'r'n)?[ 't])*))*'>(?:(
?:'r'n)?[ 't])*))*)?;'s*)