フォームを特定のパターンと一致する場合にのみ有効なフォームにしようとしています。Angular2モデル駆動型バリデーターパターン
それが一致している必要があります。ここでは
123456789
123-456-789
123 458 789
が私のパターンは次のとおりです。
^(\d{3}-\d{3}-\d{3})|(\d{3} \d{3} \d{3})|(\d{9})$
まず、楽しい事実、バリデータ上でそれを使用できるように、私がすべてのスラッシュをエスケープしてきたようですその中に。
Validators.pattern('^(\\d{3}-\\d{3}-\\d{3})|(\\d{3} \\d{3} \\d{3})|(\\d{9})$')
私の問題は、文字列のサイズの合計数を制限しないということです。
たとえば、1234567890000と一致します。私は123456789で停止したいと思います。追加の文字はfalse状態を引き起こします。
が、私はこれらの変異体を試してみました:
Validators.pattern('^(\\d{3}-\\d{3}-\\d{3})|(\\d{3} \\d{3} \\d{3})|(\\d{9})$')
Validators.pattern('(\\d{3}-\\d{3}-\\d{3})|(\\d{3} \\d{3} \\d{3})|(\\d{9})')
もう一つの楽しみの事実を、私はそれを設定した場合、:
Validators.pattern('\\d{9}')
または
Validators.pattern('^\\d{9}$')
それから私は正確に9文字を設定することができます。
正規表現エラーだと確信していますが、評価する文字列を区切るには、Angular2が^
と$
の記号を与える必要があるのか分かりません。
「?:\\ d {3}([ - ])\\ d {3} \\ 1 \\ d {3} | \\ d {9}) ''を試してください。 'Validators.pattern'の式はデフォルトで固定されているので、'^'と' $ 'を追加する必要はありません。 –
Plunkrでフィールドに '123-456-7891111'と入力してみてください。検証に合格しますが、意図した動作は、検証ツールが123-456-789の後にエラーをトリガすることです。私のルールは、9桁でなければなりません。分離されているかどうかは、 '-'またはスペースで区切られていなければなりません。 – BlackHoleGalaxy
しかし、上記の私の提案は正しいでしょうか? [this plunkr](http://plnkr.co/edit/pGsb23WQmamwChLEWRht?p=preview)を参照してください。 –