2016-02-26 51 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} 
        ^
相關問題