英数字の単語を一致させる必要があります。「-」を含めることができますが、最後または最初に含めることはできません。また、「-」を繰り返してはならず (「--」など)、単語の長さは 2 ~ 24 文字にする必要があります。
いくつかの例:
adfg
asd-asdasd
asd-asd-asd
これらは一致するべきではありません:
-asd
asd-
-asd-
-asd--asd-
正規表現を使用する上で最も難しいことの 1 つは、過度の巧妙さの誘惑に抵抗することです。2 つの別個の互換性のないテストを実行する必要があります。長さ:
/^.{2,24}$/
...そして構成:
/^[A-Z0-9]+(?:-[A-Z0-9]+)*$/i
1 回のパスで両方のテストを実行する正規表現を考え出すことは可能かもしれませんが、その必要はありません。先読みとしてそれらの1つを実行してください:
/^(?=.{2,24}$)[A-Z0-9]+(?:-[A-Z0-9]+)*$/i
正規表現は使用しているプラットフォームによって異なり、サイズのマッチングにはあまり適していません(特定の長さを決定しようとすると、日付などのより標準化された入力をチェックしない限り、柔軟性が失われる可能性があります\d{2}/\d{2}/\d{4})
。 :
[a-z]+(-[a-z]+)*
あなたの問題のアイデアを与えるかもしれません。
この PCRE 正規表現を試してください:
/^(([0-9a-z]+-)*[0-9a-z]){2,24}$/i