Javascript 电子邮件正则表达式-已排除的指定集
今天我研究正则表达式已经有六个小时了。为了我的生命,我无法理解它。我试过一百种不同的方法,但都没有用。非常感谢您的帮助 基本规则: 1-排除地址部分(在@符号之前)中的这些字符:Javascript 电子邮件正则表达式-已排除的指定集,javascript,regex,email,Javascript,Regex,Email,今天我研究正则表达式已经有六个小时了。为了我的生命,我无法理解它。我试过一百种不同的方法,但都没有用。非常感谢您的帮助 基本规则: 1-排除地址部分(在@符号之前)中的这些字符:“()@,;:\[]*&^%$\!{}/” 2-地址可以包含“.”,但不能一行包含两个 对于第一条规则,我有一个优雅的解决方案,然而,第二条规则却要了我的命!这是我到目前为止所拥有的。(为了简单起见,我只将@符号前的部分包括在内)。另外,需要注意的是,这个正则表达式正在JavaScript中使用,因此不允许使用条件IF
“()@,;:\[]*&^%$\!{}/”
2-地址可以包含“.”,但不能一行包含两个
对于第一条规则,我有一个优雅的解决方案,然而,第二条规则却要了我的命!这是我到目前为止所拥有的。(为了简单起见,我只将@符号前的部分包括在内)。另外,需要注意的是,这个正则表达式正在JavaScript中使用,因此不允许使用条件IF
/^[^()<>@,;:\\[\]*&^%$#!{}//]+$/
/^[^()@;:\\[\]*&^%$\\!{}/]+$/
首先,我建议您始终选择要允许的字符,而不是相反的字符,因为您永远不知道可能会错过哪些危险字符
其次,这是我经常用来验证电子邮件的正则表达式,它工作得非常好。希望它能帮助你
/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$/i
首先,我建议你总是选择你想允许的角色,而不是相反的角色,你永远不知道你会错过什么危险的角色 其次,这是我经常用来验证电子邮件的正则表达式,它工作得非常好。希望它能帮助你
/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$/i
规则2
/^(?:\.?[^.])+\.?$/
这意味着任意数量的序列(一个可选点后接一个强制性非点),末尾有一个可选点
考虑四个两字符序列
xx
匹配为两个非点字符.x
匹配为可选点,后跟非点x.
匹配为一个非点,后面是一个可选点。
不匹配,因为第一个点后没有非点李>
关于电子邮件地址,需要记住的一点是,圆点可能会出现在棘手的地方
"..@"@.example.com
是一个有效的电子邮件地址
“.@”
是一个完全有效的引用本地零件生产,.example.com
只是表示example.com
的一种方式,但根据根DNS解析,而不是使用主机搜索路径example.com
可能解析为example.com.myintranet.com
如果myintranet.com
位于主机搜索路径上,但.example.com
始终解析为绝对主机example.com规则编号2
/^(?:\.?[^.])+\.?$/
这意味着任意数量的序列(一个可选点后接一个强制性非点),末尾有一个可选点
考虑四个两字符序列
xx
匹配为两个非点字符
.x
匹配为可选点,后跟非点
x.
匹配为一个非点,后面是一个可选点
。
不匹配,因为第一个点后没有非点李>
关于电子邮件地址,需要记住的一点是,圆点可能会出现在棘手的地方
"..@"@.example.com
是一个有效的电子邮件地址
“.@”
是一个完全有效的引用本地零件生产,.example.com
只是表示example.com
的一种方式,但根据根DNS解析,而不是使用主机搜索路径example.com
可能解析为example.com.myintranet.com
如果myintranet.com
位于主机搜索路径上,但。example.com
始终解析为绝对主机example.com首先,根据您的规范:
^(?![\s\S]*\.\.)[^()<>@,;:\\[\]*&^%$#!{}/]@.*$
^(?![\s\s]*\.\.\)[^()@;:\\[\]*&^%$\\!{}/@*$
这只是你的正则表达式,前面钉着(?!.\.\)
。这是一个负的前瞻,如果字符串中任何地方有任何两个连续的句点,则不匹配
然而,正确匹配电子邮件地址要困难得多 首先,根据您的要求:
^(?![\s\S]*\.\.)[^()<>@,;:\\[\]*&^%$#!{}/]@.*$
^(?![\s\s]*\.\.\)[^()@;:\\[\]*&^%$\\!{}/@*$
这只是你的正则表达式,前面钉着(?!.\.\)
。这是一个负的前瞻,如果字符串中任何地方有任何两个连续的句点,则不匹配
然而,正确匹配电子邮件地址要困难得多 regex可能不是您想要的,因为识别有效电子邮件的regex是这样的:@SJuan76:这是用于没有注释的电子邮件。它也适用于过时的(两次)RFC。@Porges你能给我指一下当前版本的正则表达式吗?我很好奇:-)@SJuan76:这取决于你的正则表达式引擎。完整的电子邮件地址格式不是常规格式(它可以包含任意嵌套的括号),因此您必须使用正则表达式引擎的非常规功能。我在这里为.NET做了一个:@SJuan76,RFC 2822废弃的RFC 822.regex可能不是您想要的,因为识别有效电子邮件的regex是这样的:@SJuan76:这是用于没有注释的电子邮件。它也适用于过时的(两次)RFC。@Porges你能给我指一下当前版本的正则表达式吗?我很好奇:-)@SJuan76:这取决于你的正则表达式引擎。完整的电子邮件地址格式不是常规格式(它可以包含任意嵌套的括号),因此您必须使用正则表达式引擎的非常规功能。我在这里为.NET做了一个例子:@SJuan76,RFC 2822淘汰了RFC 822。在JavaScript中,/^(?。*\.\)[^();:\\[\]*&^%$\\\\\.!{}/]+@.$/
将匹配“\n..@
,因为
不匹配换行符。JavaScript中没有s
标志来更改
的行为。是的,这有点恶心。你可以用[\s\s]
替换
。这样更好一些,我会用它。在JavaScript中,/^(?。.*.\)[^(),;:\[\]*&^%$$\\\!{}/]+.$/
将匹配“\n..@
,因为
与l不匹配