【发布时间】:2017-10-28 16:44:58
【问题描述】:
我正在使用params[:number].gsub(/\D/,'') 保存一个数字,但我不想去掉加号:+
例如,如果用户保存号码+1 (516) 949-9508,它会保存为15169499508,但我们如何将+ 保存为+15169499508?
【问题讨论】:
-
据我了解,您只想在字符串的开头保留加号?使用
.gsub(/^(\+)|\D+/, '\1')
我正在使用params[:number].gsub(/\D/,'') 保存一个数字,但我不想去掉加号:+
例如,如果用户保存号码+1 (516) 949-9508,它会保存为15169499508,但我们如何将+ 保存为+15169499508?
【问题讨论】:
.gsub(/^(\+)|\D+/, '\1')
我了解您只想在字符串的开头保留加号。你需要使用:
.gsub(/\A(\+)|\D+/, '\1')
这里,\A(\+) 分支匹配字符串开头的文字加号。第二个分支是您的\D,它匹配除数字之外的所有字符,只是使用匹配1 次或多次出现的+ 量词。 \1 反向引用在结果字符串中恢复初始加号。
【讨论】:
如果您没有任何语法规则,delete 就可以正常工作:
'+1 (516) 949-9508'.delete('^0-9+') #=> "+15169499508"
【讨论】:
在 Ruby 中,\D 只是 [^0-9] 的别名。你可以显式设置[^0-9+]:
params[:number].gsub(/[^0-9+]/,'')
【讨论】:
[^\d+],如果你喜欢别名的话。