粗淺的編寫正則表達(dá)式,是造成性能瓶頸的主要原因。如下:

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

上述兩個(gè)正則表達(dá)式,匹配效果是一樣的,但是,效率就相差太遠(yuǎn)了,甚至在與少量字符串匹配時(shí),reg1就會(huì)造成你瀏覽器卡死。

不信?我們可以測(cè)試下。

首先,我們聲明一個(gè)字符串變量str,同時(shí)賦予一個(gè)包含20個(gè)A的字符串給str,采用match方法與上述reg1、reg2進(jìn)行匹配測(cè)試,如下:

var str = 'AAAAAAAAAAAAAAAAAAAA';

str.match(reg1);

str.match(reg2);

在瀏覽器中運(yùn)行該段代碼,發(fā)現(xiàn)一切正常嘛。

然而,隨著,我們不斷向變量str中添加A后,重復(fù)測(cè)試,在某一刻(取決于你的瀏覽器),reg1就會(huì)讓我們的瀏覽器掛起,但,回頭看看最終的str字符串長(zhǎng)度,卻還不到50。而,reg2卻安然無恙。

心里有一絲疑問,是什么造成了它們?nèi)绱司薮蟮牟顒e?以后我們?cè)趯懻齽t表達(dá)式時(shí),又該如何避免防范這類問題呢?

那么,接下來,我們就有必要深入理解JavaScript正則表達(dá)式的內(nèi)部執(zhí)行原理了。

如果,在此你還不是很了解正則表達(dá)式,那么可以參考如下兩篇博客后,再前來,小生在此等候。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式