2013-04-02 11 views
5

Knockout-Validationを使用して、私の観測対象の1つに簡単な正規表現検証を追加しようとしています。正規表現を使用して電話番号を検証するノックアウト検証

私は、次のしている:

self.ContactPhone = ko.observable().extend({ 
      required: true, 
      pattern: { 
       message: 'Invalid phone number.', 
       params: '^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$' 
      } 
     }); 

しかし、関係なく、私が入力した内容は、メッセージ「無効な電話番号を。」を返しません式の書式を設定する必要がある方法はありますか?私は純粋にJavaScriptを使用してそれをテストし、うまく動作します。

答えて

10

バックスラッシュをエスケープする必要があります。それ以外の場合、javascriptは1つのバックスラッシュ自体を次の文字のエスケープ文字として扱います。これは文字列であり、正規表現のリテラルではないためです。

編集:実は、私はちょうどチェックして、あなただけのため、これらのいずれかがそれを行うだろう、代わりにリテラルの正規表現を使用することができます。

http://jsfiddle.net/antishok/ED3Mh/2/

self.ContactPhone = ko.observable().extend({ 
    required: true, 
    pattern: { 
     message: 'Invalid phone number.', 
     params: /^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$/    
    } 
}); 

か:

params: '^\\D?(\\d{3})\\D?\\D?(\\d{3})\\D?(\\d{4})$' 
4

あなたが正規表現を使用する必要がない場合は、ここにネイティブな方法です

self.ContactPhone = ko.observable().extend({ phoneUS : true }); 

さらにリストされたhere

+0

次の番号と一緒に空白や+と()を可能にする正規表現を使用してjsfiddleに例を作業の下にあなたが知っていますかを参照してください。 'は正式なノックアウト検証ウェブサイトに掲載されていません - https://github.com/Knockout-Contrib/Knockout-Validation/wiki/Native-Rules? –

0

なぜ `phoneUSリンク

jsfiddle.net/JoelDerrick/f6g8npv6/1/

関連する問題