Angularjs正则表达式不区分大小写的修饰符不起作用

时间:2017-01-08 17:35:18

标签: angularjs regex

更新  问题可能与我测试的方式有关吗? 我通过在浏览器中进行更改(通过开发人员工具),更改了ng-pattern并期望验证通过来测试了这一点。 也许代码更改(在浏览器中)没有被提取,也就是说,重新评估没有完成?

我正在尝试使用http://www.regular-expressions.info/email.html

中的以下电子邮件地址模式
\A[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\z

我的代码:

<input type="email" name="email" ng-model="email" ng-pattern="/^[a-z0-9!#$%&amp;'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&amp;'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/" id="email-1" value="" required="" class="ng-pristine ng-untouched ng-empty ng-valid-email ng-invalid ng-invalid-required ng-valid-pattern">

这是区分大小写的。我尝试过使用&#39; i&#39;修改。

"/^[a-z0-9!#$%&amp;'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&amp;'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i"

但是,它仍然不接受大写字符(显示无效的电子邮件错误消息)。

我遇到了https://github.com/angular/angular.js/issues/1437。但是,我使用的是更高版本(1.2)。

我也试过A-Z,也没有运气。

"/^[A-Za-z0-9!#$%&amp;'*+\/=?^_`{|}~-]+(?:\.[A-Za-z0-9!#$%&amp;'*+\/=?^_`{|}~-]+)*@(?:[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?\.)+[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?$/"

如何使这种模式不区分大小写?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如所怀疑的那样,问题就是我测试的方式。 “/我工作。 当我通过浏览器编辑代码(添加“/ i”)进行测试时,“/ i”无效。但是,当我更改代码时(在相应的html / javascript文件中)工作。 让我想知道为什么浏览器中没有这样的改变。