2016-02-26 56 views
1

我正在与以下模型验证和我的测试工作,除了当我开始添加能力,包括链接坏字符正在通过:(rails 4模型文本正则表达式允许0-9,az,链接和电子邮件地址

validates :application_process, 
      presence: true, 
      format: { with: %r{\A[\w\d .,:/[email protected]&?]+\z}, message: :bad_format } 

我想允许下列:

  • AZ
  • AZ
  • 0-9
  • /
  • @
+1

你连字符创建范围。如果您需要匹配文字连字符,请将其撤销或放在字符类末尾(在']之前)。 –

+0

太棒了!如果你想补充说,我想给你信用@WiktorStribiżew –

回答

2

你有正则表达式包含-。如果一个字符类中的连字符没有被转义,并且不会出现在简写字符类,范围,字符类的开始或结尾之后,那么字符类中的连字符将创建一个范围。

所以,如果你需要匹配一个文字连字符转义它或放置在字符类的末尾(在]之前)。

要只匹配字符范围,并在你的问题中指定,使用

%r{\A[A-Za-z0-9?:/@.,]+\z} 

要添加一个连字符:

%r{\A[A-Za-z0-9?:/@.,-]+\z} 
        ^
相关问题