【问题标题】:gsub numbers and +gsub 数字和 +
【发布时间】:2017-10-28 16:44:58
【问题描述】:

我正在使用params[:number].gsub(/\D/,'') 保存一个数字,但我不想去掉加号:+

例如,如果用户保存号码+1 (516) 949-9508,它会保存为15169499508,但我们如何将+ 保存为+15169499508

【问题讨论】:

  • 据我了解,您只想在字符串的开头保留加号?使用.gsub(/^(\+)|\D+/, '\1')

标签: ruby regex gsub


【解决方案1】:

我了解您只想在字符串的开头保留加号。你需要使用:

.gsub(/\A(\+)|\D+/, '\1')

这里,\A(\+) 分支匹配字符串开头的文字加号。第二个分支是您的\D,它匹配除数字之外的所有字符,只是使用匹配1 次或多次出现的+ 量词。 \1 反向引用在结果字符串中恢复初始加号。

【讨论】:

    【解决方案2】:

    如果您没有任何语法规则,delete 就可以正常工作:

    '+1 (516) 949-9508'.delete('^0-9+') #=> "+15169499508"
    

    【讨论】:

      【解决方案3】:

      在 Ruby 中,\D 只是 [^0-9] 的别名。你可以显式设置[^0-9+]:

      params[:number].gsub(/[^0-9+]/,'')
      

      【讨论】:

      • 或者[^\d+],如果你喜欢别名的话。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      • 2015-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多