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