电子邮件地址正则表达式,最大长度

时间:2013-04-07 13:41:51

标签: html regex

我有一个正则表达式,我用于客户端HTML5验证,我需要添加一个最大长度元素。这是我的正则表达式:

@pattern = @"^([a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)$"

我如何将其限制为50个字符?

编辑:我需要检查与我使用HTML5验证相同的正则表达式中的最大长度,该验证目前仅允许检查必需和模式属性。

1 个答案:

答案 0 :(得分:8)

如果绝对必须使用正则表达式,请在正则表达式的开头添加一个先行断言:

@pattern = @"^(?!.{51})([a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)$"

(?!.{51})断言从字符串的开头开始不能匹配51个字符,而不实际消耗任何字符,因此它们仍可用于实际的正则表达式匹配。