4

次の正規表現があります。

^[a-zA-Z0-9]+( [a-zA-Z0-9]+)*$

0 ~ 10 文字の文字列を検証しようとしています。文字列に 2 つのスペースを続けて含めることはできません。また、空にすることもできません。文字列には特殊文字を含めることはできず、大文字と小文字を区別せず、ハイフンを含めることができます。

入力を 0 ~ 10 文字に制限するにはどうすればよいですか?

私は試した

^[a-zA-Z0-9]+( [a-zA-Z0-9]+{0,10})*$

しかし、それは機能しません。

4

3 に答える 3

8

私は次のようにします:

^(?!.*  )(?=.*[\w-])[\w -]{1,10}$

(?!.* )これは、 2 つの連続したスペースがないことを主張するために否定的な先読みを使用し、(?=.*[\w-])少なくとも 1 つの非スペース文字があることを主張するために肯定的な先読みを使用します (「空」は「スペースのみ」を意味すると思います)。

「空」にすることができない場合、長さをゼロにすることはできないため、長さの範囲は 0 ~ 10 ではなく、1 ~ 10 にする必要があることに注意してください。

特筆すべきは、ダッシュが最初または最後の文字である場合、文字クラスでダッシュをエスケープする必要がないという事実です。

于 2013-07-25T10:33:03.423 に答える
2
(?i)([a-z?0-9?\-?]\s?){0,10}

大文字と小文字を区別せず、0 ~ 10 の長さで、文字、数字、ハイフン、および単一スペースの任意の組み合わせに一致します。

于 2013-07-25T10:02:01.520 に答える
-1

範囲を使用する場合、「+」はないと思います。

^[a-zA-Z0-9]+( [a-zA-Z0-9]{0,10})*$

また、ハイフンを受け入れると言っていますが、ここではわかりませんか?

そう

^[a-zA-Z0-9]+( [a-zA-Z0-9\-]{0,10})*$
于 2013-07-25T09:55:07.547 に答える