如何处理 Angular Form Validation 中的特殊情况?

How to handle special cases in Angular Form Validation?

我有一个 phone 字段,其中两种格式有效 - “123-456-7890”和“+01 123-456-7890”。我有一个模式可以处理第二种情况 Validators.pattern(/(\+\d{2})?\d{3}[\-]?\d{3}[\-]?\d{4}/) 但如何使第一种情况也可以接受?据我从文档中得知,验证器仅支持 && 条件,但不支持 || 条件。我错过了什么吗?

此外,如果输入的内容尚未满足验证标准,我想让该字段变成红色,并且不会在过程中弹出窗口来烦扰用户。然后当他离开场地时,它保持红色。然后只有在提交表单时,它才会列出所有错误的字段。有办法吗?

将正则表达式更新为 /^(\+?\d{2}\s)?\d{3}[\-]?\d{3}[\-]?\d{4}$/ 即可,如果您希望 space 在国家/地区代码之后是可选的,请使用此 /^(\+?\d{2}\s?)?\d{3}[\-]?\d{3}[\-]?\d{4}$/.