这是我现在的正则表达式:
^([-a-zA-Z0-9'_+\/]+([-.'_+\/][-a-zA-Z0-9'_+\/]+)*)@(([a-zA-Z0-9]+((\.|[-]{1,2})[a-zA-Z0-9]+)*)\.[a-zA-Z]{2,6})$
验证电子邮件地址(是的,我知道我不应该尝试验证电子邮件地址,除非最简单的条款,但我们的电子邮件供应商会拒绝特殊字符等。)
此正则表达式满足除一个 -
之外的所有要求“在一段时间后没有直接宣传或强调”
正则我不是我的专长,虽然我能够到达这里。任何帮助将不胜感激。
感谢。
答案 0 :(得分:3)
您的正则表达式(除了对(...)
进行分组外,还会以^[-a-zA-Z0-9'_+\/]+
开头,这意味着开头^
后跟一个或多个+
个允许字符[...]
。在这种情况下,它们是连字符,小写/大写字母,数字,撇号,下划线,加号或反斜杠。
第二部分是你需要改变的。在正则表达式中,它是([-.'_+\/][-a-zA-Z0-9'_+\/]+)*
,这是一种可能多次出现的模式,但也不一定是*
。该模式有两个部分:允许的字符之一:连字符,句点/点,撇号,下划线,加号或反斜杠;后跟一个或多个连字符,小写/大写字母,数字,撇号,下划线,加号或反斜杠。
如果从图案的第一部分中删除句点/点,则不允许使用此字符。但是因为您希望允许使用句点/点,但不允许使用相同的字符集,所以必须定义替代模式。
如果第二部分将从您的([-.'_+\/][-a-zA-Z0-9'_+\/]+)*
更改为具有句点/点的替代版本的模式:([-'_+\/][-a-zA-Z0-9'_+\/]+|\.[a-zA-Z0-9'+\/]+)*
,那么最终的正则表达式将完成您所需的操作。如您所见,已添加|\.[a-zA-Z0-9'+\/]+
,其中包含:或|
模式单个句点/点后跟一个或多个小写/大写字母,数字,撇号,加号或反斜杠。
最终的正则表达式是:
^([-a-zA-Z0-9'_+\/]+([-'_+\/][-a-zA-Z0-9'_+\/]+|\.[a-zA-Z0-9'+\/]+)*)@(([a-zA-Z0-9]+((\.|[-]{1,2})[a-zA-Z0-9]+)*)\.[a-zA-Z]{2,6})$