在 ng-pattern 中绕过 ^ 和 $ 的默认包装
Bypass default wrapping of ^and $ in ng-pattern
我从 API 获取我的正则表达式,它们通常以 ^ 开头并以 $ 结尾(例如 ^-?[0-9]+$
)。只需将正则表达式作为字符串放入 ng-pattern 就会得到 Lexer Error
,因为 angular 默认情况下会在字符串上添加 ^ 和 $。
- If the expression evaluates to a RegExp object, then this is used directly.
- If the expression evaluates to a string, then it will be converted to a RegExp after wrapping it in ^ and $ characters. For instance,
"abc" will be converted to 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 一起工作?最好不要从正则表达式中删除 ^ 和 $。
将字符串转换为正则表达式对象有效。
但是 ng-pattern 中不应该有 {{ }}
。将它从 ng-pattern="{{ regexObj }}"
更改为 ng-pattern="regexObj"
就成功了!
我从 API 获取我的正则表达式,它们通常以 ^ 开头并以 $ 结尾(例如 ^-?[0-9]+$
)。只需将正则表达式作为字符串放入 ng-pattern 就会得到 Lexer Error
,因为 angular 默认情况下会在字符串上添加 ^ 和 $。
- If the expression evaluates to a RegExp object, then this is used directly.
- If the expression evaluates to a string, then it will be converted to a RegExp after wrapping it in ^ and $ characters. For instance, "abc" will be converted to 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 一起工作?最好不要从正则表达式中删除 ^ 和 $。
将字符串转换为正则表达式对象有效。
但是 ng-pattern 中不应该有 {{ }}
。将它从 ng-pattern="{{ regexObj }}"
更改为 ng-pattern="regexObj"
就成功了!