【问题标题】:Ruby gsub to remove illegal characters in phone numberRuby gsub 删除电话号码中的非法字符
【发布时间】:2017-01-12 01:51:22
【问题描述】:

我想删除字符串中不属于电话号码字符串的所有字符。第一个字符可能是也可能不是“+”,所有其他字符必须是数字。

我有gsub(/\D/, ''),但如果第一个字符是“+”(当然是数字),我想保留它。然后我尝试了一些否定,但这也不对:gsub(/^(\+?(\d))/, '')

如果它是“+”,我如何忽略正则表达式的第一个字符?

【问题讨论】:

  • 像“1-912-555-1212x2300”或“1-888-YOU-KNOW”这样的合法电话号码呢?
  • @tadman 也许我应该更改标题,但我描述的行为是我想要的行为。 :)
  • @CarySwoveland “第一个字符可能是也可能不是“+”,所有其他字符必须是数字。哪一部分不清楚?
  • 请见谅。我错过了所有其他字符都是数字的提及。

标签: ruby regex gsub


【解决方案1】:

如何在开头使用负前瞻:

gsub(/(?!^\+)\D*/, '')

基本上,上述正则表达式应删除字符串开头的第一个字符不是单个“+”字符的所有非数字系列。

希望对您有所帮助。

【讨论】:

  • 不错,劳塔罗!
【解决方案2】:

除非您绝对必须在一个 gsub 中执行此操作,否则单独拉出加号可能更简单。您可以使用[] method,例如:

my_string[/^\+/].to_s + my_string.gsub(/\D/, '')

to_s 是必需的,因为如果未找到加号,该方法将返回 nil

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多