Ruby on rails 在ruby中,我如何检查没有';不要从9开始?

Ruby on rails 在ruby中,我如何检查没有';不要从9开始?,ruby-on-rails,ruby,regex,Ruby On Rails,Ruby,Regex,我需要使用require表达式或ruby方式验证社会保险号,这样第一个数字就不会以9开头。有什么建议吗?这就是我所拥有的:/^\d{3}-\d{2}-\d{4}$/警告未经测试的正则表达式如下: /^[0-8][0-9]{2}-[0-9]{2}-[0-9]{4}$/警告未经测试的正则表达式如下: 这是基本的。我建议您学习正则表达式教程。只需将第一个数字更改为0-8: /^[0-8]\d{2}-\d{2}-\d{4}$/ 这是。这是基本的。我建议您学习正则表达式教程。只需将第一个数字更改为0-8

我需要使用require表达式或ruby方式验证社会保险号,这样第一个数字就不会以9开头。有什么建议吗?这就是我所拥有的:
/^\d{3}-\d{2}-\d{4}$/
警告未经测试的正则表达式如下:


/^[0-8][0-9]{2}-[0-9]{2}-[0-9]{4}$/
警告未经测试的正则表达式如下:


这是基本的。我建议您学习正则表达式教程。只需将第一个数字更改为0-8:

/^[0-8]\d{2}-\d{2}-\d{4}$/

这是。

这是基本的。我建议您学习正则表达式教程。只需将第一个数字更改为0-8:

/^[0-8]\d{2}-\d{2}-\d{4}$/

这里是。

添加一个负面展望

/\A(?!9)\d{3}-\d{2}-\d{4}\z/

添加一个消极的前瞻

/\A(?!9)\d{3}-\d{2}-\d{4}\z/

验证带或不带破折号的SS编号,破折号不以
9开头

if subject =~ /\A(?:^(?!9)\d{3}-\d{2}-\d{4}$|^(?!9)\d{9}$)\Z/
    # Successful match
else
    # Match attempt failed
end

正则表达式解释:


验证带或不带破折号的SS编号,破折号不以
9开头

if subject =~ /\A(?:^(?!9)\d{3}-\d{2}-\d{4}$|^(?!9)\d{9}$)\Z/
    # Successful match
else
    # Match attempt failed
end

正则表达式解释:


谢谢马克,我以前试过,但没用。@NicholasAlek定义“不起作用”,也就是说,它失败的测试用例是什么?谢谢马克,我以前试过,但它不起作用。@NicholasAlek定义“不起作用”,也就是说,它失败的测试用例是什么?如果你没有测试它,不要发布它。您可以在测试ruby正则表达式,如果您还没有测试过,请不要发布它。您可以在以下位置测试ruby regex:您可以提供一些上下文相关的代码吗?如果您没有得到任何给定的解决方案,那么除了正则表达式本身之外,可能还有其他问题。您能提供一些上下文相关的代码吗?如果你没有得到任何给定的解决方案,那么可能除了正则表达式本身之外,还有其他问题。我不知道该用哪一个,这一个还是公认答案中的一个。我不知道该用哪一个,这一个还是公认答案中的一个