正則表達式十分強大,幾乎在所有框架中處處可以看到,下載框架源碼仔細閱讀肯定可以發現。在項目應用中也經常需要正則的幫助,舉個栗子,我們常需要用到的表單驗證輸入。。。。其實還有很多,不一一道出,在這里我搜集了幾個實例,一來可以豐富對使用正則這方面的知識,二來動手實踐正則的應用有助於理解和加深印象。
(1)String類的Capitalize,實現首字母大寫
1 String.prototype.capitalize = function(){ 2 return this.replace(/(^|\s)([a-z])/g,function(m,p1,p2){ 3 console.log(m); //輸出為正則匹配的子字符串
4 console.log(p1); //輸出為分組1捕獲的文本
5 console.log(p2); //輸出為分組2捕獲的文本
6 return p1+p2.toUpperCase(); 7 }) 8 } 9 console.log('i am a boy '.capitalize());
輸出結果為:
I Am A Boy
(2)給出一段有成績的字符串,匹配出里面的分數,然后比較每一項和平均分的大小
1 var s = "張三56分, 李四74分, 王五92分, 趙六84分"; 2 var a = s.match(/\d+/g); 3 var avg = a.reduce(function(obj, item){ return obj + parseFloat(item);},0) / a.length; 4 var result = s.replace(/(\d+)分/g, function(){ 5 console.log(arguments[0]);//XX分
6 console.log(arguments[1]);//XX
7 var n = parseFloat(arguments[1]); 8
9 return n + "分" + "(" + ((n > avg) ? ("超出平均分" + (n - avg)) : ("低於平均分" + (avg - n))) + "分)"; 10 }); 11 console.log(result);
輸出結果為:
張三56分(低於平均分20.5分), 李四74分(低於平均分2.5分), 王五92分(超出平均分15.5分), 趙六84分(超出平均分7.5分)
(3)給出一段含有字符實體的字符串,轉換為所表示的字符
1 String.prototype.deentityify = function(){ 2 var entity = { 3 quot : '"', 4 lt : '<', 5 gt : '>'
6 }; 7
8 return function(){ 9 return this.replace(/&([^&;]+);/g,function(a,b){ 10 //console.log(a);輸出匹配模式的字符串,如<
11 //console.log(b);輸出與模式中的子表達式匹配的字符串,如lt
12 var r = entity[b]; 13 return typeof r === 'string' ? r : a; 14 }); 15 }; 16 }(); 17 document.writeln('<">&aa;'.deentityify());
輸出結果為:
<">&aa;
由於正則的應用實在太多了,不能將它們窮舉出來,不過以后筆者會不斷積累並且更新更多實例demo,好了,關於正則的總結就到這里,阿里嘎多~