【问题标题】:A particular regex is not validated correctly using Angular form Validation使用 Angular 表单验证未正确验证特定的正则表达式
【发布时间】: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


【解决方案1】:

我发现问题在于输入的类型是number。像这样的正则表达式只能添加到默认类型为 text 的输入字段中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多