我想删除字符串中不属于电话号码字符串的所有字符。第一个字符可能是也可能不是" +"所有其他字符必须是数字。
我有gsub(/\D/, '')
,但我想保留第一个字符,如果它是" +" (当然是数字)。然后我尝试了一些否定,但这也不对:gsub(/^(\+?(\d))/, '')
。
我如何忽略带有正则表达式的第一个字符iff它是" +"?
答案 0 :(得分:5)
如何在开头使用否定前瞻:
gsub(/(?!^\+)\D*/, '')
基本上,上面的正则表达式应该删除任何一系列非数字,其中第一个字符不是单个' +'字符串开头的字符。
希望它有所帮助。
答案 1 :(得分:0)
除非你必须在一个gsub
中完成,否则单独拉出加号可能更简单。您可以使用[]
method,例如:
my_string[/^\+/].to_s + my_string.gsub(/\D/, '')
to_s
是必要的,因为如果找不到加号,该方法将返回nil
。