【发布时间】:2019-09-05 11:40:48
【问题描述】:
对于我的项目,我正在尝试将特定的验证模式/正则表达式添加到输入字段。到目前为止,我使用的每个表达式都可以正常工作。
现在我想出了以下表达式:
[^-+,.]*\d+
含义:输入不应包含任何-、+、, 或.。它还应该包含一个或多个十进制数字。 (0-9)(可以用https://regex101.com/测试)
my.component.ts
this.form = this.formBuilder.group({
employeeNumber: [employeeNumber, [Validators.pattern(/^[^-+,.]*\d+$/)]]
});
正则表达式确实按预期工作。允许在输入字段中设置任何禁止字符。验证不会失败。当我尝试另一个正则表达式时它会这样做。
包含一个(或多个)无效字符的字符串被视为valid。
例子:
25.64, -135,46, ++9035.
为什么这个特定的正则表达式不起作用?提前致谢!
【问题讨论】:
-
你称什么数字为“十进制”?您的正则表达式现在允许像
abra*§cadabra123这样的任何文本,因为[^-+,.]*匹配 any 0+ 个字符,而不是-、+、,和.。你的意思是只传递一个浮点数或整数之类的字符串吗?Validators.pattern('\\d+(?:\\.\\d+)?')/Validators.pattern(/^\d+(?:\.\d+)?$/)? -
输入已被限制为
number,因此用户无法输入字符。但由于-+,.e与数字相关,因此可以在输入字段中输入。 -
那么你想通过什么,不通过什么?请提供一些示例字符串。
标签: regex angular typescript validation