gsub数字和+

时间:2017-05-28 06:26:33

标签: ruby regex gsub

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

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

3 个答案:

答案 0 :(得分:4)

在Ruby中\D只是[^0-9]的别名。您可以明确设置[^0-9+]

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

答案 1 :(得分:4)

我知道你只想在字符串的开头加一个加号。你需要使用:

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

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

答案 2 :(得分:2)

如果您没有任何语法规则,delete可以正常使用:

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