我有一个正则表达式,我用于客户端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验证相同的正则表达式中的最大长度,该验证目前仅允许检查必需和模式属性。
答案 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个字符,而不实际消耗任何字符,因此它们仍可用于实际的正则表达式匹配。