3

我正在尝试使用 ng-pattern 来使用低于日期(mm/dd/yyyy)的验证模式。

 ng-pattern="/^(\d{4})-(\d{2})-(\d{2})$/"

一旦我开始输入日期,验证错误就会出现并且即使在具有有效日期(例如 1988 年 10 月 15 日)之后仍然存在

我尝试使用 var 通过控制器传递它(如下所示),但行为相同:

在控制器中:

  $scope.myPattern = "/^(\d{4})-(\d{2})-(\d{2})$/";

在视图中:

  ng-pattern="{{myPattern}}"

注意:这两种方法都不适用于 IE9

4

4 回答 4

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
于 2014-04-08T21:33:52.403 回答
4

您的正则表达式模式应该是ng-pattern="/^(\d{2})\/(\d{2})\/(\d{4})$/". 这将匹配看起来像的日期mm/dd/yyyy

于 2014-04-08T19:17:05.050 回答
0

我为我的问题找到的解决方案是相似的。下面的正则表达式接受 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">
于 2016-07-22T17:21:20.513 回答
0

这是因为您没有以正确的 Angular 方式将 ng-pattern 绑定到控制器中的变量;)

而不是: $scope.myPattern = "/^(\d{4})-(\d{2})-(\d{2})$/";

应该是:$scope.myPattern = new RegExp(/^(\d{4})-(\d{2})-(\d{2})$/);

于 2018-02-09T21:57:19.477 回答