js 正則表達式之環視結構


一、環視

1:環視不“占用”字符,只匹配字符所在的特定位置。

2:正則表達式是從左向右進行匹配的。

二、肯定順序環視(?=....)

子表達式匹配當前位置的右側字符

 

圖中:紅色表示當前位置,綠色表示正則匹配,黃色表示斷言匹配

(1):起始位為0

(2):從左向右查看文本,如果當前位置字符與表達式2匹配成功,就查看右側文本是否滿足斷言條件,當條件1與條件2都成立時就匹配成功。

三、肯定逆向環視(?<=...)

子表達式匹配當前位置的左側字符

 

圖中:紅色表示當前位置,綠色表示正則匹配,黃色表示斷言匹配

(1):起始位為0

(2):從左向右查看文本,如果當前位置的左側能與表達式(?=4)匹配成功,就進入下一個表達式2的匹配。當條件1與條件2都成立時就匹配成功。

三、否定逆向環視(?<!...)與否定順序環視(?!...)

類似邏輯表達式 非

四、實例-1 行分位

'use strict';
{
    // 千分位
    let str = "當前消費 ¥1203.00元";
    let reg = new RegExp(/(?<=\d)(?=(?:\d{3})+(?!\d))/g);  
    let result = str.replace(reg,',');
    console.log(result);    //當前消費 ¥1,203.00元
}

 五、實例-2 電話號碼格式化

'use strict';
{
    // 電話號碼格式化為:xxx-xxxx-xxxx
    let str = "18210443800";         
    let reg = new RegExp(/(?<=\d)(?=(?:\d{4})+(?!\d))/g);  
    let result = str.replace(reg,'-');
    console.log(result);    // 182-1044-3800
}

 

六、實例-3 身份證號格式化

'use strict';
{
    // 身份證號格式化為:xxxxxx xxxx xxxx xxxx
    let str = "110101199003070812";         // 隨便輸的號碼 用於測試
    let reg = new RegExp(/(?<=\d{6})(?=(?:\d{4})+(?!\d))/g);  
    let result = str.replace(reg,' ');
    console.log(result);    // 110101 1990 0307 0812
}

 

我的百度經驗地址:https://jingyan.baidu.com/article/e73e26c07f51a724adb6a7e4.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM