0

未定義の場所にスペースが 1 つだけある数値を検証する正規表現を作成しようとしていますか?

スペースを 1 つ入れて最大 12 文字、またはスペースを入れずに最大 11 文字です。

例: 「25897 569874」、「5674」、「65783987665」、「435 6523」

これ^[0-9]{0,12}$は完璧ではないため、スペースとその数を配置する方法がわかりません。

4

2 に答える 2

4

次の正規表現を使用できます。

^(?:\d{1,11}|(?=\d+ \d+$)[\d ]{3,12})$

\d{1,11}スペースなしの 1 ~ 11 桁に一致します。

(?=\d+ \d+$)[\d ]{3,12}は、途中に 1 つのスペースがある 11 桁まで一致します。スペースを先頭または末尾にすることはできないため、' 23'拒否されます。

  • (?=\d+ \d+$)1 つ以上の数字、スペース、1 つ以上の数字、文字列の末尾に一致する先読みです。スペースが 1 つだけ表示され、そのスペースが先頭または末尾にならないことが保証されます。また、先読みは、文字列に少なくとも 3 文字あることを暗黙的に確認します。
  • [\d ]{3,12}は、文字列に数字またはスペースのみが含まれ、最大 12 個まで含まれることを保証します。繰り返し回数の下限は、先読みによって暗示されているため、3 以下に設定できます。

2 つの制約を組み合わせることで、テキストに 1 ~ 11 桁の数字と、数字の間の任意の位置にオプションのスペースが含まれることが保証されます。


先頭のスペースを許可するが、単一のスペース、空の文字列、および末尾のスペースを拒否するには:

^(?:\d{1,11}|(?=\d* \d+$)[\d ]{2,12})$

ここでも、先読みは少なくとも 2 文字を意味するため、繰り返し回数を 2 以下に設定できます。

于 2012-12-05T06:00:19.920 に答える
-1

^[0-9 ]{0,12}$ は、スペースの有無にかかわらず最大 12 文字の文字列と一致します 複数の基準が必要な場合は、OR 演算子 (パイプ) を試してください: |

^[0-9 ]{0,12}$|別の条件

于 2012-12-05T06:00:36.740 に答える