-1

这是我当前的正则表达式:

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

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

这个正则表达式满足所有要求,除了一个 -

“在一段时间后没有连字符或下划线”

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

谢谢。

4

1 回答 1

3

(...)您的正则表达式(除了以开头的分组^[-a-zA-Z0-9'_+\/]+,这意味着开头^后面跟着一个或多个+允许的字符[...]。在这种情况下,它们是连字符、小写/大写字母、数字、撇号、下划线、加号或前斜线。

第二部分是你需要改变的。在您的正则表达式中它是([-.'_+\/][-a-zA-Z0-9'_+\/]+)*,这是一种可能多次出现的模式,但也不必*. 该模式有两部分: 一个允许的字符:连字符、句点/点、撇号、下划线、加号或前斜线;后跟一个或多个连字符、小写/大写字母、数字、撇号、下划线、加号或前斜线。

如果您从模式的第一部分删除句点/点,则不允许使用此字符。但是因为您希望允许句点/点,但不能使用相同的字符集,所以必须定义替代模式。

如果第二部分将从您([-.'_+\/][-a-zA-Z0-9'_+\/]+)*的模式更改为具有 period/dot: 替代方案的模式([-'_+\/][-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})$ 
于 2012-07-19T01:53:06.697 回答