Ruby中的SSN正则表达式

Ruby中的SSN正则表达式,ruby,regex,Ruby,Regex,我刚刚开始学习正则表达式。我的代码可以工作,但我想做得更好 # Ensure all of the Social Security numbers use dashes for delimiters. # Example: 480.01.4430 and 480014430 would both be 480-01-4430. def format_ssns(string) string.gsub!(/\./, '-') if string =~ /(\d{9})|(\d{3})\D(\d{

我刚刚开始学习正则表达式。我的代码可以工作,但我想做得更好

# Ensure all of the Social Security numbers use dashes for delimiters.
# Example: 480.01.4430 and 480014430 would both be 480-01-4430.
def format_ssns(string)
  string.gsub!(/\./, '-') if string =~ /(\d{9})|(\d{3})\D(\d{2})\D(\d{4})/
  string.insert(3, '-') if string =~ /(\d{9})/
  string.insert(6, '-') if string =~ /(\d{3})\D(\d{6})/
  p string
end

format_ssns("234601422, 350.80.0744, 013-60-8762")
怎么样
s.gsub!(/\D/,'')。插入(3,'-')。插入(6,'-')

s.gsub怎么样!(/\D/,'')。插入(3,'-')。插入(6,'-')

这涵盖了所有3个:

string = "234601422, 350.80.0744, 013-60-8762"
string.gsub /\b(\d{3})\D?(\d{2})\D?(\d{4})\b/, '\1-\2-\3'
#=> "234-60-1422, 350-80-0744, 013-60-8762"
这包括所有3个方面:

string = "234601422, 350.80.0744, 013-60-8762"
string.gsub /\b(\d{3})\D?(\d{2})\D?(\d{4})\b/, '\1-\2-\3'
#=> "234-60-1422, 350-80-0744, 013-60-8762"

这个有很多问题,但我将从以下内容开始:
gsub将返回nil。是的,感谢您指出这一点这一点有很多问题,但我将从以下内容开始:
gsub返回nil。是的,感谢您指出这一点,最好继续询问。你的代码可以工作,但你想改进它。这不是问题。这是一份说明OP喜欢做什么的声明,最好还是继续问下去。你的代码可以工作,但你想改进它。这不是问题。这是一份说明OP喜欢做什么的声明。