粗淺的編寫正則表達式,是造成性能瓶頸的主要原因。如下:
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);
在瀏覽器中運行該段代碼,發(fā)現(xiàn)一切正常嘛。
然而,隨著,我們不斷向變量str中添加A后,重復測試,在某一刻(取決于你的瀏覽器),reg1就會讓我們的瀏覽器掛起,但,回頭看看最終的str字符串長度,卻還不到50。而,reg2卻安然無恙。
心里有一絲疑問,是什么造成了它們?nèi)绱司薮蟮牟顒e?以后我們在寫正則表達式時,又該如何避免防范這類問題呢?
那么,接下來,我們就有必要深入理解JavaScript正則表達式的內(nèi)部執(zhí)行原理了。
如果,在此你還不是很了解正則表達式,那么可以參考如下兩篇博客后,再前來,小生在此等候。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26