regex
以下に一致する必要があるユーザー名を検証するために を作成しようとしています:
- 許可される特殊文字は 1 つだけ
(._-)
であり、文字列の極値であってはなりません - 最初の文字を数字にすることはできません
- 許可されている他のすべての文字は、文字と数字です
- 全長は 3~20 文字である必要があります
これは HTML5 検証パターン用なので、残念ながら 1 つの大きな正規表現でなければなりません。
これまでのところ、これは私が持っているものです:
^(?=(?![0-9])[A-Za-z0-9]+[._-]?[A-Za-z0-9]+).{3,20}
しかし、正の先読みは複数回繰り返すことができ、私が望んでいたものではない複数の特殊文字を許可します。そして、それを修正する方法がわかりません。