次の条件でユーザー名の正規表現を実装したい:
ユーザー名は、az、AZ、0-9、および - (ハイフン) のみで構成されます。
ユーザー名は、数字のみまたはハイフンのみで構成されるものではありませんが、文字のみを使用できます。
最初と最後の文字はハイフンにしないでください (数字にすることはできますが、完全に数字にすることはできません)。
また、連続した 2 つのハイフンがあってはなりません。
文字の最小数は 5 で、最大は 25 です。
これまでのところ、この正規表現を試しました:
var filter = /(?=[a-zA-Z0-9-]{5,25}$)^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$/;
条件 1、3、4、および 5 を正しく達成します。しかし、条件 2 を完全には満たしていません。私の正規表現では、完全にハイフンで構成されていないことを確認します。ただし、許可されるべきではない数字のみが許可されます。
どこが間違っているのか、何をする必要があるのか 誰にでも教えてもらえますか。正規表現の説明をいただければ幸いです。