2012-03-29 19 views
3

フリーダイヤルではありませんが、検証ヘルパーでベーキングを設定する方法がわからないことを検証しようとしています。ここでフリーダイヤルではないことを確認するにはどうすればよいですか?

は、私がこれまで行っているものです:

validates :local_phone, :format => { :with => /^(\+?1)?(8(00|55|66|77|88)[2-9]\d{6})$/, :message => "cannot be a toll-free number" } 

しかし、それは数が料金無料であることを検証します。私はそれを介して切り替えしようとしました!しかし役に立たない。自分のvalidates_withクラスを書く前に、私はそれが尋ねるのが最善かもしれないと考えました。

+0

正規表現に '!'を追加しましたか、それとも元々はそこにありましたか?私は '?!'は特別なことを意味するとは考えていません(最初の文字が開かれた後でない限り)ので、現在は '!'というリテラルを持つ数字にしかマッチしません。 –

+0

Oop申し訳ありません - !もともとそこにはなかった - 私はそれを追加しました。 – Northband

+0

自分の質問にお答えする - local_phone、:format => {:with =>/^(?!(+?1)?(8 | 00 | 55 | 66 | 77 | 88) {10} $ /、:message => "フリーダイヤルではありません"} – Northband

答えて

1

フリーダイヤルではないことを確認するにはどうすればよいですか? その番号を呼び出して:-)を見つけてください。

彼はすでに答えを得ています(上記のコメントを参照)。私はただを再ポストしてです。この質問は「Unanswered」には表示されません。

validates :local_phone, :format => { 
    :with => /^(?!(+?1)?(8(00|55|66|77|88)[2-9]\d{6})).{10}$/, 
    :message => "cannot be a toll-free number" } 
+1

これをそのまま使用すると、「正規表現が正しくありません」というエラーが表示されます。 –

+0

これを試してください: ''/^(\ +?1)?(8(00 | 44 | 55 | 66 | 77 | 88)[2-9] \ d {6})/ '' – user1429980

関連する問題