ダッシュと数字のみを許可する正規表現は何ですか?
良い例は、電話番号での使用です。例: 555-555-555、12-2314-425。
次のようなエントリは必要ありません:-------------
ですが-34--53-343
、今のところは問題ありません。
したがって、前述の問題では、少なくとも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+)*$/
これは、先頭または末尾のダッシュと二重ダッシュを除外します。
ルビーはわかりませんが、正規表現は次のようになります。
/^[0-9]([0-9]|-(?!-))+$/
555-54-456
有効、無効555--54-456
)