尝试通过添加有效的正则表达式来强化我的用户个人资料表单等,以确保使用有效的电子邮件,电话号码等。 我有以下正则表达式,在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
答案 0 :(得分:2)
答案 1 :(得分:2)
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
构造函数。
答案 2 :(得分:2)
@Uri和@Pedro都提到了缺少语法和正确包装正则表达式的好处。 我修复过的另一个问题是修复了“允许空白”的问题。方法需要是一个符号。下面的工作代码。
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