JS正則表示式--正則量詞與元字元
阿新 • • 發佈:2018-12-17
一.正則量詞與元字元 規則1:全域性查詢:g g:從頭查到尾部,修飾正則表示式查詢方式
var str="hellol";
//建立正則表示式
var reg=/l/g;
var value=str.replace(reg,"o");
console.log(value);
案例:獲得某個字串的所有空格的個數
var str_1="h w e r t ";
var reg=/ /g;
var num=0;
while(reg.exec(str_1))
{num++;}
console.log(num);
或者:
for(var i=0;i<str_1.length;i++)
{if( reg.test(str[i])) num++; }
console.log(num);
規則2:不區分大小寫:i
var str_1="ello HELLO";
var reg=/h/;//未加入i
var reg_1=/h/i;//加入i
console.log(reg.test(str_1));//未加入i的輸出結果
console.log(reg_1.test(str_1));//加入i的輸出結果
var str_2="hello HELLO";
var reg_2=/h/ig;//i和g規則可以共存
console.log(str_2.replace(reg_2,"替換"));
規則3:任意字元 “.”
var str_3="helloel9";
var reg=/e../g;//相當於e和任意字元組合成的多個字元的正則表示式,可以含有多個任意字元存在
console.log(str_3.replace(reg,"M"));
規則4: 0或者1個字元 ? –問號:修飾的前一個字元,代表前一個字元存在或者不存在
var str_4="hello"; //在記憶體空間中存放hello字串的方式為:
//'h' 'e' 'l' 'l' 'o',=即是說每個字元中間正則表示式也會進行校驗,即產生MhMMlMlMoM的結果
var reg_4=/e?/g;
console.log (str.replace(reg_4,"M"));
// 對 "1" 進行全域性搜尋,包括其後緊跟的零個或一個 "0":
var str="1, 100 or 1000?";
var patt1=/10?/g;
console.log(str.replace(patt1,"8"))//則輸出為"8,80 or 800?"
console.log(str.match(patt1))//則輸出為"1,10,10"
規則5:代表0個或者n個 “*” –星號:同樣是修飾前一個字元存在0次或者n次
var str_5="hello";
var reg_5=/e*/g;
console.log(str_5.replace(reg_5,"M"));
// 對 "1" 進行全域性搜尋,包括其後緊跟的零個或n個 "0":
var str="1, 100 or 1000?";
var patt1=/10?/g;
console.log(str.replace(patt1,"8"))//則輸出為"8,8 or 8?"
console.log(str.match(patt1))//則輸出為"1,100,1000"
規則6:代表一個或者N個–"+" –加號:修飾前面的字元
var str="heelelo";
var reg_6=/e+/g;
console.log(str.replace(reg_6,"M"));
規則7:代表重複的範圍 --{} –大括號:修飾前面的字元
**一.寫法說明:**
第一種:{3}代表待操作的字串內必須含有連續3個正則表示式裡的字串
第二種:{1,3}代表前面的字元最少有一個,最多有3個;首先看是否滿足最大值,然後再看是否滿足最小值的條件;
第三種:{2,}可以有這種寫法,表示最少有2個,最多有N個
var str="heeeelo";
**二.具體例項:**
// 寫法1:
var reg_7=/el{3}/g;//{3}代表待操作的字串內必須含有連續3個正則表示式裡的字串
// 寫法2:
var reg_8=/e{1,3}/g;
console.log(str.replace(reg_7,"M"));
console.log(str.replace(reg_8,"M"));
**三.關於{}的其他例子:**
var str="hello";
var str_1="[email protected]@llo";
var reg_9=/el{2}/g
console.log(str.replace(reg_9,"M"));
//輸出為:hMo,可以理解為若正則表示式的檢驗字元不相同的話則大括號對其前面的一個字元進行正則匹配判斷,因為是要有兩個"l"才生效,所以"ll"被檢索到並進行替換,順帶替換掉檢索的"e",所以結果為hMo
var reg_10=/@@{2}/g;
console.log(str_1.replace(reg_10,"Q"));
輸出為:[email protected]@llo,可以理解為若正則表示式的檢驗字元相同的話則大括號對其前面的所有字元進行正則匹配判斷,因為要有2個"@@"才能校驗成功,所以校驗失敗,返回原字串的內容
規則8: (1)或規則 --|
var str="hello";
var reg_11=/h|l/g;//即是替換h或者l的字元,可進行多個替換
console.log(str.replace(reg_11,"M"));
(2)或規則–[]
var str_1="hello";
var reg_12=/[he]/g;//中括號裡的內容為或的內容,空格,逗號等內容也算是或的一種
console.log(str_1.replace(reg_12,"M"));
(3)或規則典型例子:
--(1)替換所有的英文字元:(包含所有大小寫)
var str="hellosadihaohfisahuifhasd";
var reg_13=/[a-zA-Z]/g;
console.log(str.replace(reg_13,"M"));
--(2)替換所有數字
str="1234324892934823";
var reg_14=/[0-9]/g;
console.log(str.replace(reg_14,"0"));
--(3)刪除所有的漢字
var str="你好hello";
var reg_15=/[\u4e00-\u9fa5]/g;//在記憶體空間中,漢字一般有專門的編碼方式,\u是代表UTF-8編碼
console.log(str.replace(reg_15,""));
規則9: (1)以什麼開頭-- ^
var str="hello";
var reg=/^h/g;//判斷是否以正則表示式的校驗字元開頭
console.log(reg.test(str));
(2)以什麼結束 $
var str="hello"
var reg_16=/o$/g;//判斷是否以正則表示式的校驗字元結尾
console.log(reg_16.test(str));
規則10:取反規則 --^ ----注意:要和中括號一起使用
例子:只保留數字
var str="123hh";
var reg=/[^0-9]/g;//去除非數字的字元規則
console.log(str.replace(reg,""));
規則11:整體字元–()
var str="hehehello";
var reg=/(he){3}/g;
console.log(str.replace(reg,"M"));
小綜合例項: 1.判斷一個字串是否為6位長度的數字
var str="123456";
var reg=/^[0-9]{6}$/g;//[0-9]限制大括號裡的6位必須是數字,然後"^"和"$"限制開頭和結尾,即限制必須只有六位數
console.log(reg.test(str));