ruby - 只允许破折号和数字的正则表达式?

标签 ruby regex

仅允许破折号和数字的正则表达式是什么?

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

虽然我不想要像这样的条目:-------------34--53-343 适合现在。

最佳答案

因此,在所述问题中,您至少需要一位数字,但除此之外是 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+)*$/

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

关于ruby - 只允许破折号和数字的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11251364/

相关文章:

ruby-on-rails - 未定义方法 `gsub' 为 nil :NilClass driving me insane in ruby on rails

Python 使用正则表达式提取字符串的出现

python - 使用 Spacy 正则表达式的意外结果

regex - Xcode 6 不再识别\1,\2,\# 模式?

ruby-on-rails - 如何在终端中修复Yarn包已过期

ruby - rhtml (eruby) apache 麻烦

ruby - 我如何确保 Ruby 使用不易受到 Heartbleed 攻击的 OpenSSL?

java - JRuby:启动浏览器时 Watir 挂起

regex - 如何使用单行解析需要多个匹配项的 csv 输出?

javascript - 用于设计查询语言的正则表达式