只允许短划线和数字的正则表达式?

Lea*_*RoR 1 ruby regex

只允许短划线和数字的正则表达式是什么?

一个很好的例子是在电话号码中使用.例如555-555-555,12-2314-425.

我不想要这样的条目:-------------虽然但-34--53-343现在还可以.

dbe*_*hur 7

因此,在所述的问题中,您需要至少一个数字,否则任何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
Run Code Online (Sandbox Code Playgroud)

如果您正在尝试识别电话号码,您可能想要识别可以用单个破折号分隔的数字序列的东西,请尝试以下方法:

/^\d+(?:-\d+)*$/
Run Code Online (Sandbox Code Playgroud)

其中不包括前导或尾随破折号和双破折号.