Railsvalidation电话号码正则表达式
尝试通过添加有效的正则表达式来增强我的用户个人资料表单等,以确保使用有效的电子邮件,电话号码等。 我有以下正则表达式,在Rubular上测试时工作正常,但是当我将它添加到我的模型时出现语法错误,如下所示:
(^(\+44\s?7\d{3}|\(?07\d{3}\)?)\s?\d{3}\s?\d{3}$ validates_format_of :contactnr, with: (^(\+44\s?7\d{3}|\(?07\d{3}\)?)\s?\d{3}\s?\d{3}$, allow_blank => true
你在$
行结束前错过了结束括号
试试这个:
(^(\+44\s?7\d{3}|\(?07\d{3}\)?)\s?\d{3}\s?\d{3})$
看看这个链接 ,那里有一些英国电话号码正则表达式。
Ruby的文字正则表达式包含在//
:
validates_format_of :contactnr, with: /^(\+44\s?7\d{3}|\(?07\d{3}\)?)\s?\d{3}\s?\d{3}$/, allow_blank => true
从文档 :
Regexp
包含一个正则表达式,用于匹配模式与字符串。 使用/.../
和%r{...}
文字以及Regexp::new
构造函数创建正则表达式。
@Uri和@Pedro都提到了缺少语法和正确包装正则表达式的好处。 我修复过的另一个问题是,’allow_blank’方法需要是一个符号。 下面的工作代码。
validates_format_of :contactnr, with: /\A((\(?0\d{4}\)?\s?\d{3}\s?\d{3})|(\(?0\d{3}\)?\s?\d{3}\s?\d{4})|(\(?0\d{2}\)?\s?\d{4}\s?\d{4}))(\s?\#(\d{4}|\d{3}))?\Z/, :allow_blank => true