正則表達式的練習

今天,做了幾個編程題目,深感正則表達式的強大。

一、檢查字符串中是否包含數字。包含則返回true,否則返回false。

 	function containsNumber(str) {                 
               for (var i = 0; i < str.length; i++) { 
                     if (!isNaN(parseInt(str[i]))) { //判斷是否爲數字
                         return true;                       
                     }
               }
               return false;
        } 

parseInt(string, radix):將字符串解析爲數字。radix爲基數。默認是十進制數。

                                     如果字符串的第一個字符不能被轉換爲數字,會返回 NaN。

isNaN():檢查某個值是否是非數字值。如果參數值爲 NaN 或字符串、對象、undefined等非數字值則返回 true, 否則返回             false。

使用正則表達式爲:

function containsNumber(str) { 			   
 	var reg=/\d/;
        return reg.test(str); 			   
}

二、給定字符串 str,檢查其是否包含連續重複的字母(a-zA-Z),包含返回 true,否則返回 false

 function containsRepeatingLetter(str) {

        return /([a-zA-Z])\1/.test(str);
    }

():代表捕獲組,

\1代表對第一個捕獲組的引用

獲取 url 中的參數 
    1. 指定參數名稱,返回該參數的值 或者 空字符串 
    2. 不指定參數名稱,返回全部的參數對象 或者 {} 

    3. 如果存在多個同名參數,則返回數組**

function getUrlParam(sUrl, sKey) {

	      var arr={};
		sUrl.replace(/\??(\w+)=(\w+)$?/g,function (match,p1,p2) {
			if (!arr[p1]) {
				arr[p1]=p2;
			}else{
				p=arr[p1];
				arr[p1]=[].cancat(p,p2);
			}
		});

		if(!sKey){
			return arr;
		}else{
			for(var ele in arr){
				if (ele=sKey) {
					return arr[ele];
				}
			}
			return "";
		}	
	}

   注意:1、repalce函數的第二個參數可以是替換文本,也可以是產生替換文本的函數。函數的參數,match爲子捕獲                       組,p1,p2,...pn爲捕獲組的各個項。

             2、 g代表全局屬性。意思是說,找到匹配的值之後,繼續回溯查找。

             3、 若replace的第二個參數爲函數,函數的參數如下

               

四、駝峯命名的轉換

function campCase(str) {
		var reg=/-([a-z])/g;
		return str.replace(reg,function (match,p1) {
		      return p1.toUpperCase();
		});
}

注意:1.repalce的返回值爲替換後的字符串。

           2..match爲匹配子字串。(包括-)

           3.p1爲第一個捕獲組。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章