javascript - Angular中特定格式的日期验证
问题描述
我希望我的日期字段有一个验证,只允许接受的格式,例如
const ACCEPTED_DATE_FORMATS = [
'MM/DD/YYYY', 'M/D/YYYY', 'MM/D/YYYY', 'M/DD/YYYY',
'MM/DD/YY', 'M/D/YY', 'MM/D/YY', 'M/DD/YY',
'DD.MM.YYYY', 'D.M.YYYY', 'D.MM.YYYY', 'DD.M.YYYY',
'DD.MM.YY', 'D.M.YY', 'D.MM.YY', 'DD.M.YY'];
这是我的日期表格
dateForm = new FormGroup({
startDate: new FormControl(''),
endDate: new FormControl('')
});
我如何使用验证来做到这一点?我不熟悉正则表达式......
Validators.Required
也不type="date"
是我想要的。
Angular 是否有一个特殊的验证器或者我必须编写一个自定义验证器?
我发现 American Date 的正则表达式是:
(0[1-9]|1[0-2])\/(0[1-9]|[1-2][0-9]|3[0-1])\/[0-9]{4}
编辑:
/^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/
接受 YYYY/MM/DD 和 DD/MM/YYYY。
对于其他接受的格式,我需要你的帮助
解决方案
你有几个选择
- 如果您使用的是反应形式
- 您可以使用内置的正则表达式验证器
startDate: new FormControl('', Validators.pattern('[a-zA-Z ]*') )
- 将您的自定义模式插入到您需要的内容中
- 在您的情况下,由于您有多种模式,因此您的正则表达式模式将类似于
^\d{2}\/\d{2}\/\d{4}|\d{1}\/\d{1}\/\d{4}$
- 我只在这里添加了你的前两个模式。您可以根据需要添加更多
- 如果您希望应用更复杂的逻辑,或者创建自定义验证器。
- Angular 文档为创建自定义验证器提供了很好的指南。如果你需要更复杂的东西
- 如果您使用的是模板表单
- 在输入上使用模式属性
- IE
<input name="firstName" ngModel pattern="[a-zA-Z ]*">
推荐阅读
- reactjs - React - 如何从孙子调用父函数
- java - 基于数组 contains 和 orderby 查询 firestore
- css - 在 CSS 中,*:link 和 :link 之间有什么区别吗?
- matplotlib - 如何使用串行向我的 PyQt5 窗口添加实时(更新)图?
- .net - 寻找有关 TeamCity 代理要求中某些语法的说明
- wordpress - 如何将用户评论以 PDF 格式附加到订单
- mysql - 记录未插入 - mySql 节点
- laravel - 使用 laravel 保护移动应用程序的公共 api
- python - 关于 Python For 循环的初学者问题
- sql - 重叠时的 SQL Group 相关字符串(传递关系?)