我們在字符串操作過程中肯定經常用了test() split() replace() match() indexof()等方法,很多人經常把用法寫錯了,包括我,所以今天細細的整理了下。
test()是判斷是字符串是否與正則表達式匹配,返回true | false;
//例1 現在有個要求,判斷字符串是不是數字
var reg=/^\d$/; //匹配數字正則
var str="123"; //一個字符串
//是這樣寫呢
reg.test(str);
//還是這樣寫叱
str.test(str);
//例2 現在又有一個要求,替換字符串中所有的數字
var reg=/\d/g; //匹配所有數字正則
var str="AAAA00000BBBBB11111CCCCCC";
//問題又來了,是這樣寫呢還是這樣寫
reg.replace(str,"");
str.replace(reg,"");
同學們千萬別死記硬背,容易傷身體,只要我們搞清楚了這樣正則表方法就很容易掌握用法
這些方法分為兩類,一類是正則表達式方法,另一類是字符串方法
正則表達式方法這樣調用:reg.方法(字符串);
字符串方法這樣調用 :字符串.方法(reg);
具體的分類往下看吧……
一、正則表達式的定義
1、var reg=//參數;
2、var reg=new RegExp("","參數")
二、正則表達式的常用方法,方法分兩種一種正則表達式自定的方法和字符串操作方法
1、RegExp對象方法
1.1、test():返回字符串是否與Reg匹配。
例:
var reg=/\d/; var str1="123"; var str2="ABC"; reg.test(str1);//true reg.test(str2);//false
1.2、exec():返回字符串中與reg首次匹配的值
var reg=/\d/; var str1="923ABC"; reg.exec(str1);//9
1.3、compile():用於改變RegExp
var reg=/\d/; var str1="923"; console.log(reg.test(str1));//true reg.compile("\w"); console.log(reg.test(str1));//false
2、字符串操支持正則表達式的方法
2.1、replace():替換reg匹配字符串
var reg=/\d/; var str1 = "AAA9BBBB2CCCC3DDDD"; console.log(str1.replace(reg,"--"));//AAA--BBBBCCCCDDDD //用--替換字符串中數字,但結果發現卻只替換掉了第一個,因為reg默認匹配第個 //那么要替換所有的數字,需要在reg后面加個全部的參數 g var reg=/\d/g; var str1 = "AAA9BBBB2CCCC3DDDD"; console.log(str1.replace(reg,"--"));//AAA--BBBB--CCCC--DDDD
2.2、split():按reg匹配的值拆分成數組
var reg=/\d/; var str1 = "AAA9BBBB2CCCC3DDDD"; console.log(str1.split(reg));//["AAA", "BBBB", "CCCC", "DDDD"]
2.3、match():返回reg匹配的第個字符串
var reg=/\d/; var str1 = "AAA9BBBB2CCCC3DDDD"; console.log(str1.match(reg));//"9" 返回第一個數字"9"
2.4、search():返回reg匹配的第一個字符串的位置,沒有則返回-1
var reg=/\d/; var str1 = "AAA9BBBB2CCCC3DDDD"; console.log(str1.search(reg)); //3 返回第個數字 9的位置
3、很多人容易把以上兩個方法順序寫反。
正則方法的調用是:reg.方法(字符串);
字符串方法的調用:字符串.方法(reg);
三、參數:
g :全文查找
var reg=/\d/; var str1 = "AAA9BBBB2CCCC3DDDD"; console.log(str1.replace(reg,"--"));//AAA--BBBBCCCCDDDD //用--替換字符串中數字,但結果發現卻只替換掉了第一個,因為reg默認匹配第個 //那么要替換所有的數字,需要在reg后面加個全部的參數 g var reg=/\d/g; var str1 = "AAA9BBBB2CCCC3DDDD"; console.log(str1.replace(reg,"--"));//AAA--BBBB--CCCC--DDDD
i :忽略大小寫
var reg = /a/i; var str1 = "AAA9BBBB2CCCC3DDDD"; console.log(str1.replace(reg,"--")); // AAA9BBBB2CCCC3DDDD var reg = /a/; var str1 = "AAA9BBBB2CCCC3DDDD"; console.log(str1.replace(reg,"--")); //--AA9BBBB2CCCC3DDDD
m:多行查找
這個有點不好理解,多行查找和全文查找有什么區別呢。我們來舉個例子看看
//例:全文查找 替換所有的A var reg = /A/g; var str1 = "AAA9BBBB2CCCCAAAA3DDDD"; console.log(str1.replace(reg,"-")); // ---9BBBB2CCCC----3DDDD //例:多行查找 var reg = /A/m; var str1 = "AAA9BBBB2CCCCAAAA3DDDD"; console.log(str1.replace(reg,"-")); // -AA9BBBB2CCCCAAAA3DDDD //多行查找一般用於有換行的字符中 var reg = /^A/; var str1 = "BBBB9BBBB2CCCC\r\nAAAA3DDDD"; console.log(str1.replace(reg,"-")); //BBBB9BBBB2CCCC //AAAA3DDDD //字符串里有個換行符當正則匹配第一行后就結束了,所以這里就引用了換符符的功能 var reg = /^A/m; var str1 = "BBBB9BBBB2CCCC\r\nAAAA3DDDD"; console.log(str1.replace(reg,"-")); //BBBB9BBBB2CCCC //-AAA3DDDD //全文查找的范圍大於多行查找