Ruby on rails 电话格式的正则表达式错误

Ruby on rails 电话格式的正则表达式错误,ruby-on-rails,ruby,regex,activerecord,Ruby On Rails,Ruby,Regex,Activerecord,有以下正则表达式来描述正则表达式: validates :phone, format: { with: /\A(\+7|8)[0-9]{10}\z/ } “8927777”必须与此表达式匹配,+7927777也必须匹配。但我总是收到“无效电话”的信息。我怎样才能修好它?谢谢 如果您只想用一种简单的方法来验证一个国际号码,该号码可能以+开头,也可能不以7或8开头,然后再加上10位数字,那么这个正则表达式应该可以做到: \A\+?[78]\d{10}\z 如果我的假设不正确,请在评论中告诉我

有以下正则表达式来描述正则表达式:

validates :phone, format: { with: /\A(\+7|8)[0-9]{10}\z/ }

“8927777”必须与此表达式匹配,+7927777也必须匹配。但我总是收到“无效电话”的信息。我怎样才能修好它?谢谢

如果您只想用一种简单的方法来验证一个国际号码,该号码可能以
+
开头,也可能不以7或8开头,然后再加上10位数字,那么这个正则表达式应该可以做到:

\A\+?[78]\d{10}\z

如果我的假设不正确,请在评论中告诉我,我们将制定更好的解决方案


注意:别忘了在正则表达式周围加上/--我在这里没有这样做是因为使用了Debuggex

What is
验证
:phone
:format
消息的来源是什么?我不知道正则表达式是如何参与这个过程的,但就匹配而言,您拥有的正则表达式与两个字符串都匹配。@sawa如果您阅读OP所要求的内容,则它与他所寻找的内容不匹配。他想要一个与11位数字匹配的正则表达式,该数字可以(也可以不)以
+
开头,后跟
7
8
,后跟10位数字。你为什么不至少帮助他?多诺万,这种敌意是没有理由的。帮助别人的一部分就是帮助他们澄清自己的问题。给定的正则表达式确实匹配两个给定的输入。我刚刚在IRB中试过:
p=['+7927777','8927777'];p、 映射{124; s | s=~/\A(\+7 | 8)[0-9]{10}\z/}
(结果
[0,0]
)@Malcaouri,你能告诉我们你给出的什么有效输入导致了“无效电话”错误吗?您是否对未显示的
:phone
字段进行了另一次验证?原始帖子中的两个字符串是“+7”后接10位,“8”后接10位。@DavidGrayson您是对的,当然,我有点沮丧,因为我已经试着帮了忙,还挨了一巴掌(众所周知)。然而,我认为你也可能没有理解老年退休金问题的意图。他试图匹配一个国际电话号码,所以除非我弄错了,否则它也应该匹配
+8927777777
(当前的正则表达式没有)。这就是我想说的。