Ruby gsub删除电话号码中的非法字符

时间:2017-01-12 01:51:23

标签: ruby regex gsub

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

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

我如何忽略带有正则表达式的第一个字符iff它是" +"?

2 个答案:

答案 0 :(得分:5)

如何在开头使用否定前瞻:

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

基本上,上面的正则表达式应该删除任何一系列非数字,其中第一个字符不是单个' +'字符串开头的字符。

希望它有所帮助。

答案 1 :(得分:0)

除非你必须在一个gsub中完成,否则单独拉出加号可能更简单。您可以使用[] method,例如:

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

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