用于电子邮件验证的正则表达式不起作用

本文关键字:正则表达式 不起作用 验证 电子邮件 用于 | 更新日期: 2023-09-27 17:56:55

>我有以下用于电子邮件验证的正则表达式

^([A-Za-z0-9])+(['-|_|'.]?)+([A-Za-z0-9])+@([A-Za-z0-9]*'.?[A-Za-z]*'.[A-Za-z]{2,4})$  

它适用于所有预期的情况,除了 1:

@ 后,它应该接受如下任何内容:

gmail.com  
yahoo.co.uk  

这工作正常。

@,之前,它应该接受如下任何内容:

name  
name.name   
name_name  
name-name

它适用于所有上述情况,在负面测试场景中不会失败,但以下情况除外:

name..name  

name_.-name  

也就是说,当连续性书写时,它允许我写这些字符任意时间。

我的要求是它应该只允许其中一种(-._)并且它们只能发生一次。
表达式 : [.|_|'-]

但我不工作。有什么解决方法吗?

用于电子邮件验证的正则表达式不起作用

不要费心使用正则表达式;有效电子邮件地址的范围很大,即使是最好的正则表达式也会遗漏其中的一些。 如果您想验证电子邮件,请与域的邮件服务器联系并询问该地址是否有效。

为了给您一个想法,这里有一个正则表达式,可以捕获最有效的电子邮件地址:

(?:(?:'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*)
我想

你应该删除第二组后面的+。

这:

^([A-Za-z0-9])+(['-|_|'.]?)+([A-Za-z0-9])+@([A-Za-z0-9]*'.?[A-Za-z]*'.[A-Za-z]{2,4})$

应该是这样的:

^([A-Za-z0-9])+(['-|_|'.]?)([A-Za-z0-9])+@([A-Za-z0-9]*'.?[A-Za-z]*'.[A-Za-z]{2,4})$

如果要强制使用此分隔符,还必须删除该字符组后面的问号并执行以下操作:

^([A-Za-z0-9])+(['-|_|'.])([A-Za-z0-9])+@([A-Za-z0-9]*'.?[A-Za-z]*'.[A-Za-z]{2,4})$