ng-pattern从角度常量使用正则表达式

时间:2016-04-19 17:48:41

标签: angularjs regex validation

- 短版 -

如何从角度常量中使用ng-pattern来使用正则表达式?

- 长版 -

我正在开展一个庞大的Angular 1项目,我们有多种形式。很多这些表单都有相同的字段,如Zip和电话号码。我想寻找一种使用ng-pattern的一致方法,但在一个位置使用正则表达式来保持一致性。我想为此使用角度常数,但我不能使用ng-pattern来获取值,我无法弄清楚原因。

- 我做了什么 -

我确实找到了这个答案Angularjs dynamic ng-pattern validation,用于将正则表达式动态地放入ng-pattern中,我试过了,但该方法似乎不适用于角度常量。

我尝试将正则表达式存储为字符串并在HTML中进行转换。 我尝试使用返回正则表达式值的函数。

- 问题的问题 -

https://jsfiddle.net/Michael_Warner/692deLsb/8/

问题归结为这行代码。

ng-pattern="patterns.zip"

如果我将正则表达式直接嵌入到ng-pattern中,那么就可以在小提琴中看到它

ng-pattern="/^\d{5}(?:-\d{4})?$/"

2 个答案:

答案 0 :(得分:3)

您可以通过两种方式实现:

1:作为字符串 literal ,当你必须双斜杠时:

.constant("formPattern", {
    zip: new RegExp("^\\d{5}(?:-\\d{4})?$")
})

2:作为正则表达式:

.constant("formPattern", {
    zip: /^\d{5}(?:-\d{4})?$/
})

两者都在你的小提琴中工作。

答案 1 :(得分:0)

只需将常量添加到$scope变量

即可
$scope.myPattern = /^\d{5}(?:-\d{4})?$/;

然后在html中

ng-pattern=myPattern