3

次のプロパティを持つ文字列に一致する正規表現を作成しようとしています:

  1. 正確に 3 文字が含まれています。
  2. 空白を含めることができます。
  3. 少なくとも 1 文字は空白以外にする必要があります。
  4. 空白と数字のみを使用できます。

以下の例を参照してください。b空白文字を表すために使用しています。

有効な例

123
b12
bb1
1bb
12b

無効な例

bbb
1b2

私はもう試した

 [0-9 ]{1, 3}

上記の正規表現は、すべての文字が空白の文字列に一致します。誰かがより良い正規表現を書くのを手伝ってくれますか?

4

2 に答える 2

9

これには先読みを使用します。

^(?=.*\d)[\d ]{3}$

説明:

^         # Start of string
(?=.*\d)  # Assert presence of at least one digit
[\d ]{3}  # Match exactly three digits or spaces
$         # End of string
于 2013-01-20T08:57:16.103 に答える
5

これは完全に書き出す必要があります。さらに、オプションで前または後にスペースを付けた数字のみが必要な場合 (許可されていないビットからわかる1b2ように)、可能性の数はわずかです。

([0-9]  )|([0-9]{2} )|([0-9]{3})|(  [0-9])|( [0-9]{2})

そこにあります。

もちろん、正規表現の外で length=3 のチェックを行うことができれば、正規表現自体は次のように短縮できます。

([0-9]{1,3}[ ]*)|([ ]*[0-9]{1,3})
于 2013-01-20T08:52:32.147 に答える