angularjs – Angular ng-pattern崩溃浏览器
发布时间:2020-12-17 17:18:53 所属栏目:安全 来源:网络整理
导读:我们有一个用于电子邮件的正则表达式.我们的应用程序继承了正则表达式,所以它可能不是一个选项来切换它…无论如何,同样的一组步骤似乎会使浏览器中的 javascript崩溃.我已经能够在IE和Chrome中重现,但不能在Firefox中重现.这是代码: var mod = angular.modu
我们有一个用于电子邮件的正则表达式.我们的应用程序继承了正则表达式,所以它可能不是一个选项来切换它…无论如何,同样的一组步骤似乎会使浏览器中的
javascript崩溃.我已经能够在IE和Chrome中重现,但不能在Firefox中重现.这是代码:
var mod = angular.module("myApp",[]); mod.controller("MainCtrl",function ($scope) { //Pattern that blows up the browser during ng-pattern $scope.emailPattern = /^(?!.*.{2})([a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+([.][a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*)@((([-]?[a-zA-Z0-9]){2,}[.])*(([a-zA-Z0-9][-]?){1,})+).(([.]([a-zA-Z0-9][-]?){2,}([a-zA-Z0-9])*)+)$/; }); HTML: <div ng-app="myApp" ng-controller="MainCtrl"> <form name="emailForm" novalidate> <input type="text" ng-model="user.email" name="email" maxlength="80" required ng-pattern="emailPattern"> </form> <br> {{user.email}} </div> Fiddle here.以下是导致浏览器崩溃的基本步骤: >在文本框中键入一堆字母字符,直到它满了(其他输入可能有效,但这是我使用过的). 这将使IE和Chrome一直崩溃.以前有人遇到过这个bug吗?任何已知的解决方法? 解决方法
我认为问题在于正则表达式本身.
如果您使用原始表达式访问任何正则表达式验证程序站点(如http://regexpal.com/),则会出现同样的问题(浏览器冻结). 更改: $scope.emailPattern = /^(?!.*.{2})([a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+([.][a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*)@((([-]?[a-zA-Z0-9]){2,}([a-zA-Z0-9])*)+)$/; 至: $scope.emailPattern = /^(?!.*.{2})([a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+([.][a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*)@((([-]?[a-zA-Z0-9]){2,}[.])*(([a-zA-Z0-9][-]?))+).(([.]([a-zA-Z0-9][-]?){2,}([a-zA-Z0-9])*)+)$/; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- shell 13文件包含
- SignUpPage build by "Bootstrap3.x + RubyO
- Angular2如何将所有接口实现注入服务列表?
- angularjs – 如何将一个服务作为依赖关系注入到
- Bootstrap3 框架下 使用 Bootstrap-table 结合 B
- 【Bootstrap】选择折叠项collapse
- angularjs – 使用Angular在输入提交按钮上动态设
- 将十六进制字符串转换为bash命令行中的ascii
- angularjs – 访问$rootScope的Angular1 < - > A
- scala – 如何将Akka Streams Merge的输出传输到
热点阅读