Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 角模式浏览器_Angularjs - Fatal编程技术网

Angularjs 角模式浏览器

Angularjs 角模式浏览器,angularjs,Angularjs,我们有一个用于电子邮件的正则表达式。我们的应用程序正在继承正则表达式,因此可能无法切换它。。。无论如何,相同的步骤似乎会使浏览器中的javascript崩溃。我已经能够在IE和Chrome中复制,但不能在Firefox中复制。代码如下: var mod = angular.module("myApp", []); mod.controller("MainCtrl", function ($scope) { //Pattern that blows up the browser duri

我们有一个用于电子邮件的正则表达式。我们的应用程序正在继承正则表达式,因此可能无法切换它。。。无论如何,相同的步骤似乎会使浏览器中的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:



{{user.email}
。以下是导致浏览器崩溃的基本步骤:

  • 在文本框中键入一堆字母字符,直到它满为止(其他输入可能会起作用,但这是我使用的)
  • 退格2个字符
  • 主页键返回输入的前面
  • 键入字符:a@

  • 这将使IE和Chrome一致崩溃。以前有人遇到过这个错误吗?任何已知的解决方法?

    我认为问题在于正则表达式本身

    如果使用原始表达式访问任何regex验证器站点(如),同样的问题也会出现(浏览器冻结)


    更改:

    $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])*)+)$/;
    
    致:


    我能够复制。嘿,我注意到ng模式的文档上写着:'*@param{string=}ngPattern set
    pattern
    validation error key,如果值与*RegExp模式表达式不匹配。对于内联模式,预期值为
    /regexp/
    ;对于定义为范围表达式的*模式,预期值为
    regexp
    。可能您的问题在于使用范围表达式和内联模式。当我将其用作范围表达式或内联表达式时,会出现崩溃。使正则表达式变得“更简单”不会使浏览器崩溃,但按原样验证正则表达式应该没有什么错。对导致过度回溯的那个不必要的量词有很好的了解。@Zach你救了我一天!
    $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])*)+)$/;
    
    $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])*)+)$/;