粗浅的编写正则表达式,是造成性能瓶颈的主要原因。如下:

var reg1 = /(A+A+)+B/; var reg2 = /AA+B/;

上述两个正则表达式,匹配效果是一样的,但是,效率就相差太远了,甚至在与少量字符串匹配时,reg1就会造成你浏览器卡死。

不信?我们可以测试下。

首先,我们声明一个字符串变量str,同时赋予一个包含20个A的字符串给str,采用match方法与上述reg1、reg2进行匹配测试,如下:

var str = 'AAAAAAAAAAAAAAAAAAAA';

str.match(reg1);

str.match(reg2);

在浏览器中运行该段代码,发现一切正常嘛。

然而,随着,我们不断向变量str中添加A后,重复测试,在某一刻(取决于你的浏览器),reg1就会让我们的浏览器挂起,但,回头看看最终的str字符串长度,却还不到50。而,reg2却安然无恙。

心里有一丝疑问,是什么造成了它们如此巨大的差别?以后我们在写正则表达式时,又该如何避免防范这类问题呢?

那么,接下来,我们就有必要深入理解JavaScript正则表达式的内部执行原理了。

如果,在此你还不是很了解正则表达式,那么可以参考如下两篇博客后,再前来,小生在此等候。

延伸阅读

学习是年轻人改变自己的最好方式-Java培训,做最负责任的教育,学习改变命运,软件学习,再就业,大学生如何就业,帮大学生找到好工作,lphotoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训学习是年轻人改变自己的最好方式