RegExp正則表達式-基本語法

RegExp

百度雲資料
密碼:

 f89c

裏面有詳細的語法跟例子,希望對大家有幫助.

課前補充

  1. 轉義字符 “\”
  2. 多行字符串
  3. 字符串換行符\n

RegExp作用

  1. 匹配特殊字符或有特殊搭配原則的字符的最佳選擇。

創建方式

  1. 直接量(推薦)
  2. new RegExp();
var str = "abc\\def";
        // 直接量
        var reg = /abc/i;
        // i 是忽略大小寫
        var Str = "ABCDe";

        // 創建的第二種方式
        var regg = new RegExp("abc","igm");

        // RegExp() 要是這個參數放進去的本身是正則表達式,
        // 那麼它是相同的規則,但是不是同一個引用
        var reg1 = RegExp(reg);
        var reg2 = new RegExp(reg);
        // reg1 跟 reg 是同一個,他們指向同一個地址
        // reg2 內容跟這個 reg是一樣的, 但是他們不是指向同一個地址

i g m 修飾符

1. i 執行對大小寫不敏感的匹配。
2. g 執行全局匹配查找所有匹配而非在找到第一個匹配後停止
3. 執行多行匹配

方法

1. reg.test(str);
判斷str字符串是不是包含這個reg片段
2. str.match(reg)
把匹配的reg串給返回

方括號(表達式)

1. [abc] 查找方括號之間的任何字符
2. [^abc]  查找任何不在方括號之間的字符
3. [0-9] 0到9數字
4. [a-z] 查找任何從小寫 a 到小寫 z 的字符
5. (red|blue|green) 查找任何指定的選項
也就是不是當個字符,可能是個字符串

元字符(具有特殊意義的字符)

1. \w等於[0-9A-z_]也是代表一位(world)
2. \W等於[^\w] 表示的\w的非
3. \d等於[0-9]  \D等於[^\d]
4. \s元字符用於查找空白符(空格符  製表符 回車符 換行符 垂直換行符 換頁符) \S 查找非空白字符 \s === [\t\n\r\v\f ]
5. \b 匹配單詞邊界 \B 匹配非單詞邊界
6. . === [^\r\n]

量詞

1. n+ 匹配任何包含至少一個 n 的字符串 {1,}
2. n* 匹配任何包含零個或多個 n 的字符串 {0,}
3. n? {0,1}
4. n{x} 表示的就是三個
5. n{x,y}  表示的是x到y個
6. n{x,}   表示就是x到無限個
7. n&  匹配任何結尾爲 n 的字符串
8. ^n  匹配任何開頭爲 n 的字符串
9. ?=n 匹配任何其後緊接指定字符串 n 的字符串
10. ?!=n  匹配任何其後沒有緊接指定字符串 n 的字符串

RegExp對象上面的屬性

1. global global 屬性來檢測正則表達式是否具有標誌 g
2. ignoreCase  RegExp 對象是否具有標誌 i
3. lastIndex   一個整數,標示開始下一次匹配的字符位置
4. multiline  屬性用於返回正則表達式是否具有標誌 m
5. source  正則表達式的源文本

RegExp 方法

1. exec  檢索字符串中指定的值 返回找到的值 並確定其位置
2. compile  編譯正則表達式
3. test 檢索字符串中指定的值。返回 true 或 false

支持正則表達式的 String 對象的方法

1. search 檢索與正則表達式相匹配的值
2. match 找到一個或多個正則表達式的匹配
3. replace 替換與正則表達式匹配的子串
4. split 把字符串分割爲字符串數組

拓展() 子表達式

var reg4 = /(\w)\1(\w)\2/g;
    // () 這個整體叫做是子表達式
    // 上面自然而言就是有兩個子表達式
    //
    // \數字表示的意思就是copy一份前面的值
    var str4 = "aabb";
    console.log(str4.match(reg4));
    console.log(reg4.exec(str4));

非貪婪匹配

  1. 再量詞後面加個問號
var str = "aaaaaa";
var reg = /a{1,3}?/g;
var ans = str.match(reg);

replace

// 匹配xxyy形式,然後換成yyxx
        var reg3 = /(\w)\1(\w)\2/g;
        var str3 = "aabbccdd";
        // var tmp = str3.match(reg3);
        var ans = str3.replace(reg3,"$2$2$1$1"); //bbaa
        
        // var anss = str3.replace(reg3,function(arr,$1,$2){
        //     // console.log("arr內容:"+arr);
        //     console.log($2);
        //     return $2 + $2 + $1 + $1;
        // });
		// the-first-name
        // theFirstName
        var reg5 = /-(\w)/g;
        var str = "the-first-name";
        var ans1 = str.replace(reg5,function ($,$1){
            // 這個方法調用的次數取決於匹配了多少次就調用多少次
            // $1 表示的就是第一個子表達式的內容
            return $1.toUpperCase();
        });

實現千位分隔符

 		var str = '1234567890';
        var f = str.replace(/\d{1,3}(?=(\d{3})+$)/g, '$&,');
		console.log(f);

解釋:

正則表達式 \d{1,3}(?=(\d{3})+$)  表示前面有1~3個數字,後面的至少由一組3個數字結尾。

?=表示正向引用,可以作爲匹配的條件,但匹配到的內容不獲取,並且作爲下一次查詢的開始。

 $& 表示與正則表達式相匹配的內容,具體的使用可以查看字符串replace()方法的
		// 正向預查 正向斷言
        var str4 = "aba!aa";
        var reg44 = /a(?=b)/g;
        //表示的是a後面要是b,但是這個b不參加最後結果
        console.log(str4.match(reg44));
        var f = '1234567890'.replace(/\d{1,3}(?=(\d{3})+$)/g, '$&,');
console.log(f);
		// 結果:1,234,567,890
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章