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 に答える