【发布时间】:2018-03-03 06:15:31
【问题描述】:
我在这里问是因为我怀疑 Angular 2 验证模式可能与其他语言的验证模式不同。
我有一个日期模式用于我的 asp.net 验证以获取 mm/dd/yyyy,它考虑了闰年等,并且还接受 m/d/yyyy。它的使用方式如下。
dateSubmitted: [null, [Validators.required, Validators.pattern('((^(10|12|0?[13578])([/])(3[01]|[12][0-9]|0?[1-9])([/])((1[8-9]\d{2})|([2-9]\d{3}))$)|(^(11|0?[469])([/])(30|[12][0-9]|0?[1-9])([/])((1[8-9]\d{2})|([2-9]\d{3}))$)|(^(0?2)([/])(2[0-8]|1[0-9]|0?[1-9])([/])((1[8-9]\d{2})|([2-9]\d{3}))$)|(^(0?2)([/])(29)([/])([2468][048]00)$)|(^(0?2)([/])(29)([/])([3579][26]00)$)|(^(0?2)([/])(29)([/])([1][89][0][48])$)|(^(0?2)([/])(29)([/])([2-9][0-9][0][48])$)|(^(0?2)([/])(29)([/])([1][89][2468][048])$)|(^(0?2)([/])(29)([/])([2-9][0-9][2468][048])$)|(^(0?2)([/])(29)([/])([1][89][13579][26])$)|(^(0?2)([/])(29)([/])([2-9][0-9][13579][26])$))')]],
此模式在我的 asp.net 应用程序中运行良好,但它不在 Angular2 中,无论我尝试在输入框中键入正确的日期格式还是使用材料日期选择器输入它都会失败。我还没有找到任何关于此的信息。我已经成功地在 Angular2 中应用了其他模式,比如电子邮件。
如果需要此信息,我的 package.json 中的 Angular 版本如下:
"@angular/animations": "^4.3.6",
"@angular/cdk": "^2.0.0-beta.10",
"@angular/common": "^4.1.0",
"@angular/compiler": "^4.1.0",
"@angular/core": "^4.1.0",
"@angular/forms": "^4.1.0",
"@angular/http": "^4.1.0",
"@angular/material": "^2.0.0-beta.10",
"@angular/platform-browser": "^4.1.0",
"@angular/platform-browser-dynamic": "^4.1.0",
"@angular/router": "^4.1.0",
"@ngrx/core": "^1.2.0",
编辑:添加 plunker:https://plnkr.co/edit/qHPZceVTpS4x1AEqZfjA
【问题讨论】:
-
将模式中的所有
\加倍。 -
这不太行,还有其他角色我也必须逃脱吗?
-
尝试复制/粘贴一个from here(我在那里双重转义
\d,小提琴不起作用)。 -
我在 2017 年 9 月 21 日和 2017 年 9 月 21 日在该站点和我的应用程序上进行了测试,但均未成功。
-
我得检查一下,看看还会发生什么,它在 asp.net 中有效
标签: regex angular validation angular-material