2

我从 API 获取我的正则表达式,它们通常以 ^ 开头并以 $ 结尾(例如^-?[0-9]+$)。只需将正则表达式作为字符串放入 ng-pattern 就会得到 a Lexer Error,因为 Angular 默认在字符串上添加 ^ 和 $ 。

来自Angular API 参考

  • 如果表达式的计算结果为 RegExp 对象,则直接使用 this。
  • 如果表达式的计算结果为字符串,则在将其包装为 ^ 和 $ 字符后,它将被转换为正则表达式。例如,“abc”将转换为 new 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 回答