- 短版 -
如何从角度常量中使用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})?$/"
答案 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