4

我有一个用于客户端 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 验证相同的正则表达式中的最大长度,该验证目前仅允许检查必需和模式属性。

4

1 回答 1

11

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

@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 个字符,而不实际消耗任何字符,因此它们仍然可用于实际的正则表达式匹配。

于 2013-04-07T13:57:25.903 回答