未定義の場所にスペースが 1 つだけある数値を検証する正規表現を作成しようとしていますか?
スペースを 1 つ入れて最大 12 文字、またはスペースを入れずに最大 11 文字です。
例: 「25897 569874」、「5674」、「65783987665」、「435 6523」
これ^[0-9]{0,12}$
は完璧ではないため、スペースとその数を配置する方法がわかりません。
次の正規表現を使用できます。
^(?:\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 以下に設定できます。
^[0-9 ]{0,12}$ は、スペースの有無にかかわらず最大 12 文字の文字列と一致します 複数の基準が必要な場合は、OR 演算子 (パイプ) を試してください: |
^[0-9 ]{0,12}$|別の条件