2

API から正規表現を取得していますが、多くの場合、^ で始まり $ で終わります (たとえば^-?[0-9]+$)。Lexer Errorangularは文字列にデフォルトで ^ と $ を追加するため、正規表現を文字列として ng-pattern に配置するだけで、になります。

Angular APIリファレンスから

  • 式が RegExp オブジェクトに評価される場合、これが直接使用されます。
  • 式が文字列に評価される場合、^ および $ 文字でラップした後、正規表現に変換されます。たとえば、「abc」は新しい RegExp('^abc$') に変換されます。

それでは、正規表現文字列を正規表現オブジェクトに変換してみましょう。だから私はこれを試しました:

json.data.data[i].validateRegex = new RegExp(json.data.data[i].validateRegex, "g");

しかし、別のエラーが発生します:

Error: ngPattern:noregexp
Expected Regular Expression
Expected {} to be a RegExp but was {}.

正規表現を ng-pattern で動作させるにはどうすればよいですか? できれば正規表現から ^ と $ を削除せずに。

4

1 に答える 1

2

文字列を正規表現オブジェクトに変換すると機能します。

しかし、ng-pattern はその中にあるべきではありません{{ }}ng-pattern="{{ regexObj }}"からに変更すると、ng-pattern="regexObj"うまくいきました!

于 2016-05-13T10:49:10.277 に答える