Angular Validator模式可在HTML中使用,但不能在TypeScript中使用

时间:2019-03-22 09:59:10

标签: regex angular validation design-patterns

遵循正则表达式确实可以在HTML中正常工作,例如以下示例:

#include <vector>
#include <iostream>

int main() {
    std::vector<int> *v = new std::vector<int>[5];
    v[0].push_back(1);
    v[0].push_back(2);
    v[0].push_back(3);
    v[0].push_back(4);
    v[3].push_back(31);
    v[3].push_back(32);
    std::cout << v[0][1] << '\n';
    std::cout << v[0][2] << '\n';
    std::cout << v[3][1] << '\n';
    std::cout << v[4].size() << '\n';
    delete[] v;
    return 0;
}

但是,如果我想将该模式放入FormGroup中,则无法识别验证器:

2
3
32
0

我尝试将其放入字符串中,以除去<input type="text" formControlName="mgmtIP" class="input-text" pattern="([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])"> mgmtIP: [host.mgmtIP, [ Validators.required, Validators.pattern(/^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$/) ]], 。那也不行

2 个答案:

答案 0 :(得分:0)

好的,我找到了这个问题的答案。我当时很愚蠢: 我在表单数组中有一个带有验证器的初始表单。然后,我在其中推送了一些新的表单组,这些表单组未配置这些验证器。无论如何,谢谢您的帮助!

答案 1 :(得分:-1)

个人而言,我不会为此使用正则表达式,因为它会混淆代码且难以调试(您现在已经知道了)。检查IP有效性的更简单方法是:

  1. 仅允许[0-9。]
  2. .
  3. 分割
  4. 检查细分是否不为空且在范围内

我并不是说正则表达式不适合这样做,但出于可维护性的考虑,我不会这样做(或使用经过良好测试的正则表达式)。