ユーザー入力を数値のみに制限し、最大 10 回の出現に制限するために、正規表現を作成するのに助けが必要です。
入力を数値のみに保持するように機能している正規表現がありますが、最大 10 に制限することはできません。
ここに私が持っているものがあります:
^(0|[1-9][0-9]*)$
負の数、小数、および 0 を受け入れても問題ありません。何かアドバイス?
ユーザー入力を数値のみに制限し、最大 10 回の出現に制限するために、正規表現を作成するのに助けが必要です。
入力を数値のみに保持するように機能している正規表現がありますが、最大 10 に制限することはできません。
ここに私が持っているものがあります:
^(0|[1-9][0-9]*)$
負の数、小数、および 0 を受け入れても問題ありません。何かアドバイス?
^\s*([0-9)+){0,10}\s*$
これは基本的に、0から10のことをしたいということです。ここで、それぞれのことはすべて数字です。ユーザーが番号の前後にスペースを入れることができるように、両側に\s*を追加しました。これは次のようなものを受け入れます
10 1231231 1231 1231 23112 123123
本当に必要なのが1つの数字、つまり最大10桁の場合は、さらに簡単です。
^\s[0-9]{1,10}\s$
あなたはこれを試すことができます:
^(?<=\s)(\-?[\d]{1,10}(?=\s))$
あなたが探している正規表現はこれです:
/(?=^[-+]?\d*\.?\d+$)^.{1,10}$/
この正規表現では、入力の最大長を10にすることができます。これには、オプション+
または-
開始時の符号と小数点が含まれます.
。
これは 11 桁なので失敗します。
Debug.WriteLine(Regex.IsMatch("12345678901", @"^\d{1,10}$").ToString());
スペースで区切られた最大10セットの数字が必要であることを明確にする前に、上記の回答を投稿しました。
受け入れられた回答をテストしましたが、.NET Regex では失敗しました。構文エラーを修正しても、スペースで解析されません
これを試してみてください
Debug.WriteLine(Regex.IsMatch(" 12345 678901 12 ", @"^\s*([+-]?\d+)(\s+[+-]?\d+){1,9}\s*$").ToString());