我试图在视图中使用ng-pattern来使用低于日期(mm / dd / yyyy)的验证模式。
ng-pattern="/^(\d{4})-(\d{2})-(\d{2})$/"
一旦我开始输入日期,验证错误就会出现,并且在有效日期(例如10/15/1988)之后仍然存在
我尝试使用var传递它通过控制器(如下所示)但行为相同:
在控制器中:
$scope.myPattern = "/^(\d{4})-(\d{2})-(\d{2})$/";
在视图中:
ng-pattern="{{myPattern}}"
注意:这两种方法都不适用于IE9
答案 0 :(得分:5)
怎么样:
/^((\d{4})-(\d{2})-(\d{2})|(\d{2})\/(\d{2})\/(\d{4}))$/
这适用于dd / mm / yyyy和yyyy-mm-dd
/^((\d{4})-(\d{2})-(\d{2})|(\d{2})\/(\d{2})\/(\d{4}))$/.test('04/04/1974')
true
/^((\d{4})-(\d{2})-(\d{2})|(\d{2})\/(\d{2})\/(\d{4}))$/.test('1974-04-04')
true
答案 1 :(得分:4)
您的正则表达式模式应为ng-pattern="/^(\d{2})\/(\d{2})\/(\d{4})$/"
。这将匹配看起来像mm/dd/yyyy
答案 2 :(得分:0)
我发现问题的解决方案类似。 regex bellow接受格式为dd / mm / yyyy的任何日期,年份范围从1990年到2020年。
<input name="birthDate"
ng-pattern='/^(0?[1-9]|[12][0-9]|3[01])\/(0?[1-9]|1[012])\/(19\d\d|20[12]\d)$/' ng-model="newUser.birthDate" type="text">
答案 3 :(得分:0)
这是因为您没有以正确的Angular方式将ng-pattern绑定到控制器中的变量;)
而不是: $ scope.myPattern =“/ ^(\ d {4}) - (\ d {2}) - (\ d {2})$ /”;
应该是: $ scope.myPattern = new RegExp(/ ^(\ d {4}) - (\ d {2}) - (\ d {2})$ /);