首页 > 解决方案 > Angular:使用模式的反应式表单验证未按预期工作

问题描述

我正在使用 Angular 5 和反应形式,我正在尝试使用以下正则表达式来验证电子邮件

^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$

我已经在https://regexr.com/中测试了这个正则表达式

在此处输入图像描述

以角度反应形式使用时相同的正则表达式 -> validators.compose 在此处输入图像描述

在此处输入图像描述

它失败。 在此处输入图像描述

标签: angularangular-reactive-formsreactive-forms

解决方案


问题在于我如何使用电子邮件正则表达式,我们不应将正则表达式括在 '' 中,而应将其括在 //

电子邮件模式

/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

出于某种原因,我的项目正则表达式包含在 '' 中并且工作正常。

如果有人想深入了解此 https://codesandbox.io/s/practical-monad-7p2y3?file=/src/app/app.component.ts ,这里是沙箱链接


推荐阅读