regex - Angular2 - 为什么我的带有 html 模式属性的反应式表单输入无法正确验证?
问题描述
我正在努力解决一个我无法理解的问题:
我需要使用 来验证具有角度反应形式上的pattern="[0-9]+([,.][0-9])?"
属性的输入字段,但似乎我最后的量词不起作用......Validators.pattern
?
我想要的是
我想验证最大值为零或一位小数的数字。正如您在https://regex101.com/r/2D2sww/1上看到的,正则表达式运行良好。
实际问题
在我的应用程序中,我可以输入任意数量的小数,而无需Validator.pattern
执行任何操作。任何其他字符都会使表单无效,因此我的验证器正在工作。
这是我的代码(简化):
组件.html
<form [formGroup]="myForm">
<input type="number" formControlName="myInputField" id="myInputField" pattern="[0-9]+([,.][0-9])?" required />
</form>
component.ts(为清楚起见,跳过了每个导入和声明)
ngOnInit() {
this.myForm = this.formBuilder.group({
myInputField: [
"",
[Validators.required, Validators.pattern],
]
});
}
我已经尝试过使用Validators.pattern(/^[0-9]+([,.][0-9])?$/)
,并且如文档中Validators.pattern("[0-9]+([,.][0-9])?")
所指出的那样,但它并没有改变任何东西,所以我怀疑我的正则表达式不正确......
有任何想法吗 ?谢谢,祝你有美好的一天:)
解决方案
我认为您的验证器模式正则表达式没有任何问题,您可以pattern
从输入中删除 ' 属性,这是多余的,因为您是从 ts 文件内部启动它:'myInputField': new FormControl(null, [Validators.pattern('^[0-9]+([,.][0-9])?$')])
.
推荐阅读
- tesseract - pytesseract 不使用用户词
- html - 如何删除我的联系表格中多余的填充?
- html - CSS _ HTML:尽管我设置了相关高度,但我的 DIV 重叠,并且 HTML 元素 div 默认为块
- python - 提取csv文件的第三列
- typescript - 如何在 Typescript 中键入动态大小的数组?
- django - UUIDFields 是否应该在 Django 中唯一并被索引?
- python - 使用 python 进行正则表达式处理
- ios - 将 Swift 类导入 Obj-C 时:在类型的对象上找不到属性
- jmeter - 当输出计数变化时在正则表达式提取器中处理多个值
- r - 将计数数据转换为单个数据