RegExp對象


用正則雖多

但是對這個對象並不是很瞭解,所以做點筆記  記的是一些我不熟悉的東西  嘿嘿.............

 

例化RegExp對象

1.直接寫        

    var reg = /\d+/g

 

2.new RegExp

    new RegExp("\\d+","g")

       (1) i,g,m放在第2個參數上

       (2) 斜槓要轉義  所以是\\

 

第一種用法很常見了 我也喜歡直接這麼用(主要是因爲那些字符要轉義 我不是很清楚)

第2中在某種字符串不確定的時候還是很有用的 比如一下的例子

	var str = '<div class="your sister" id="myid" name="myname" sister="yousister"></div>';
	function getAttr(attr,str){
		var reg = new RegExp(attr+"\\s*=\\s*(['\"]?)(.*?)\\1");
		return reg.exec(str)[2];
	}
	getAttr("id",str);
	getAttr("class",str);
	getAttr("name",str);
	getAttr("sister",str);

 


RegExp實例屬性

global                     布爾值,表示是否標識了g.

ignoreCase           布爾值,表示是否標識了i.

multiline                布爾值,表示是否標識了m.

source                    字符串,表示創建RegExp對象實例時指定的表達式文本字符串.

lastIndex                整數,表示開始搜索下一個匹配項的字符位置,從0開始算  (ps只是設置了g ,然後執行exec或者test  纔會從下一個開始算, 不然一直從0開始算)

 

例子

	var reg = /ab\d+/g;
	alert(reg.global);           //true
	alert(reg.ignoreCase);       //false
	alert(reg.multiline);        //false
	alert(reg.source);           //ab\d+


lastIndex的例子

	var reg = /\d+/;
	var str = "123asd456vbn789";
	alert(reg.exec(str));    //123
	alert(reg.lastIndex);    //0
	alert(reg.exec(str));    //123
	alert(reg.lastIndex);    //0
	alert(reg.exec(str));    //123  
	alert(reg.lastIndex);    //0

	var reg1 = /\d+/g;       //設置了g
	alert(reg1.lastIndex);   //0
	alert(reg1.exec(str));   //123
	alert(reg1.lastIndex);   //3 
	alert(reg1.exec(str));   //456
	alert(reg1.lastIndex);   //9
	alert(reg1.exec(str));   //789
	alert(reg1.lastIndex);   //15


 

RegExp構造函數屬性

Input                  最近一次zuij匹配的字符串

lastMatch          最近一次的匹配項

lastParen          最近一次的匹配捕獲組

leftContext         input中lastMath之前的文本  (是lastMatch    不是lastParen)

rightContext      input中lastMath之後的文本

$1-9                   表示這次匹配的捕獲組  依次RegExp.$1,RegExp.$2,RegExp.$3,RegExp.$4,

 

	var reg = /<div id="(.*?)" name="(.*?)" class="(.*?)"/,
		str = '<div id="myid" name="myname" class="myclass" action="your sister">';
	reg.exec(str);	
	alert(RegExp.$1);    //myid
	alert(RegExp.$2);    //myname
	alert(RegExp.$3);    //myclass
	alert(RegExp.lastMatch);   //<div id="myid" name="myname" class="myclass"
	alert(RegExp.lastParen);   //myclass
	
	var reg1 = /\d+/g,
		str1 = '12nm34sdf56oiu78sx';
	reg1.exec(str1);
	alert(RegExp.leftContext);   //空的  因爲12左邊沒有東西
	alert(RegExp.rightContext);  //nm34sdf56oiu78sx
	reg1.exec(str1);
	alert(RegExp.leftContext);   //12nm
	alert(RegExp.rightContext);  //sdf56oiu78sx
	//繼續執行 同理了

 

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