テキスト フィールドで ng-pattern を使用して、カナダの電話番号を検証しています。
^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$
しかし、AngularJS は次のエラーをスローします。
構文エラー: トークン '?' [^(?([0-9]{3}))?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$] [?([0-9]{3}))?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$].
私はそれをテストし、 Rubularのようないくつかの異なるオンライン正規表現エディターで試してみましたが、完全に有効であるようです。フィールドを動的に作成しているので、ng-pattern は ngRepeat 内のディレクティブでこのように設定されています。
ng-pattern="{{field.format}}"
ハードコードされた正規表現に変更すると、エラーは発生しません。
ng-pattern="/^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/"
しかし、それを途方もなく単純なものに変更しました。
^[0-9]{3}$
これは機能するため、フィールドを動的に作成して正規表現だけに関連付けることはできません。