正则表达式禁止._或.-(电子邮件验证/ javascript)

时间:2012-07-19 01:48:04

标签: javascript regex

这是我现在的正则表达式:

^([-a-zA-Z0-9'_+\/]+([-.'_+\/][-a-zA-Z0-9'_+\/]+)*)@(([a-zA-Z0-9]+((\.|[-]{1,2})[a-zA-Z0-9]+)*)\.[a-zA-Z]{2,6})$ 

验证电子邮件地址(是的,我知道我不应该尝试验证电子邮件地址,除非最简单的条款,但我们的电子邮件供应商会拒绝特殊字符等。)

此正则表达式满足除一个 -

之外的所有要求
  

“在一段时间后没有直接宣传或强调”

正则我不是我的专长,虽然我能够到达这里。任何帮助将不胜感激。

感谢。

1 个答案:

答案 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})$