2

ダッシュと数字のみを許可する正規表現は何ですか?

良い例は、電話番号での使用です。例: 555-555-555、12-2314-425。

次のようなエントリは必要ありません:-------------ですが-34--53-343、今のところは問題ありません。

4

2 に答える 2

9

したがって、前述の問題では、少なくとも1桁が必要ですが、それ以外の場合は0〜9またはダッシュのいずれかが必要です。

/^[\d-]*\d[\d-]*$/

%w{555-555-555 12-2314-425 -34--53-343 -------------}.each{|s| puts "#{s} #{s.match(/^[\d-]*\d[\d-]*$/) ? 'does' : 'does not'} match"}

555-555-555 does match
12-2314-425 does match
-34--53-343 does match
------------- does not match

電話番号を認識しようとしている場合は、オプションで一重ダッシュで区切られた数字のシーケンスを認識するものが必要になる可能性があります。代わりにこれを試してください。

/^\d+(?:-\d+)*$/

これは、先頭または末尾のダッシュと二重ダッシュを除外します。

于 2012-06-28T19:16:55.393 に答える
3

ルビーはわかりませんが、正規表現は次のようになります。

/^[0-9]([0-9]|-(?!-))+$/
  1. 数字から始めて、
  2. 数字の後に続くか、ダッシュの前にダッシュがないダッシュ。複数回可能(555-54-456有効、無効555--54-456
于 2012-06-28T19:16:34.030 に答える