Ruby gsub 删除 phone 号码中的非法字符
Ruby gsub to remove illegal characters in phone number
我想删除字符串中不属于 phone 数字字符串的所有字符。第一个字符可以是也可以不是“+”,所有其他字符必须是数字。
我有 gsub(/\D/, '')
,但我想保留第一个字符,如果它是“+”(当然是数字)。然后我尝试了一些否定,但这也不对:gsub(/^(\+?(\d))/, '')
.
如果它是“+”,我如何忽略正则表达式的第一个字符?
开始时使用负前瞻怎么样:
gsub(/(?!^\+)\D*/, '')
基本上,上面的正则表达式应该删除第一个字符不是字符串开头的单个“+”字符的任何 non-digits 系列。
希望对您有所帮助。
除非您绝对必须一次性完成 gsub
,否则单独拉出加号可能更简单。你可以使用 []
method,像这样:
my_string[/^\+/].to_s + my_string.gsub(/\D/, '')
to_s
是必需的,因为如果找不到加号,该方法将 return nil
。
我想删除字符串中不属于 phone 数字字符串的所有字符。第一个字符可以是也可以不是“+”,所有其他字符必须是数字。
我有 gsub(/\D/, '')
,但我想保留第一个字符,如果它是“+”(当然是数字)。然后我尝试了一些否定,但这也不对:gsub(/^(\+?(\d))/, '')
.
如果它是“+”,我如何忽略正则表达式的第一个字符?
开始时使用负前瞻怎么样:
gsub(/(?!^\+)\D*/, '')
基本上,上面的正则表达式应该删除第一个字符不是字符串开头的单个“+”字符的任何 non-digits 系列。
希望对您有所帮助。
除非您绝对必须一次性完成 gsub
,否则单独拉出加号可能更简单。你可以使用 []
method,像这样:
my_string[/^\+/].to_s + my_string.gsub(/\D/, '')
to_s
是必需的,因为如果找不到加号,该方法将 return nil
。