JavaScript Regex 筆記

來源:互聯網
上載者:User

 

特殊字元轉義(小寫!)

 

\w word 字母數字底線[a-zA-Z0-9_]

\s space 任何Unicode空白符 [\n\r\f\t\v]

\d decimal [0-9]

\b bound 單詞邊界 (/^JavaScript\b/ 與 “JavaScript is...”匹配,不與“JavaScript:alert('');”匹配)

 

重複

 

{n}

{m, n}

{m,} 重複次數大於m

 

分組與引用

 

通過括弧對Regex進行分組。

分組兩個作用:一是重複,而是引用。

\ $

 

匹配位置

 

(?=  ) 預查 指定匹配字串接下來應該出現的匹配串

如:/JavaScript(?=hello)/ 匹配 “JavaScripthelloworld”中的JavaScript串

 

(?!  ) 預查非

 

(?:  ) 匹配但不擷取

 

標誌

 

m 多行模式比對 不加則只匹配單行結果 ^行首 $行尾

 

其他

 

\xn 匹配 n,其中 n 為十六進位轉義值。十六進位轉義值必須為確定的兩個數字長。

 

\num 匹配 num,其中num是一個正整數。對所擷取的匹配的引用。

 

\n 標識一個八進位轉義值或一個後向引用。如果 \n 之前至少 n 個擷取的子運算式,則 n 為後向引用。否則,如果 n 為八位元字 (0-7),則 n 為一個八進位轉義值。

 

\nm 標識一個八進位轉義值或一個後向引用。如果 \nm 之前至少有is preceded by at least nm 個擷取得子運算式,則 nm 為後向引用。如果 \nm 之前至少有 n 個擷取,則 n 為一個後跟文字 m 的後向引用。如果前面的條件都不滿足,若 n 和 m 均為八位元字 (0-7),則 \nm 將匹配八進位轉義值 nm。

 

\nml 如果 n 為八位元字 (0-3),且 m 和 l 均為八位元字 (0-7),則匹配八進位轉義值 nml。

 

\un 匹配 n,其中 n 是一個用四個十六進位數字表示的Unicode字元。

 

匹配中文字元的Regex: [u4e00-u9fa5]

 

匹配雙位元組字元(包括漢字在內):[^x00-xff]

 

? 當該字元緊跟在任何一個其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 後面時,匹配模式是非貪婪的。非貪婪模式儘可能少的匹配所搜尋的字串,而預設的貪婪模式則儘可能多的匹配所搜尋的字串

 

(?:pattern) 匹配pattern 但不擷取匹配結果,也就是說這是一個非擷取匹配,不進行儲存供以後使用。

 

怎樣查看自己的Regex是否寫對(檢查逸出字元是否寫對),可以查看Regex對象的.source屬性。

 

範例程式碼

 

Code
<script language="javascript">
var strSrc = "xxa1b01c001yya2b02c002zz";
var re = /a(\d)b(\d{2})c(\d{3})/gi;
var arr, count = 0;
while ((arr = re.exec(strSrc)) != null) {
    displayResult();
}
function displayResult() {
    document.write("<p>這是用Regex/" + re.source + "/gi對字串<br>\"" + RegExp.input + "\"進行第" + (++count) + "次搜尋的結果:<br>");
    document.write("RegExp.index為" + RegExp.index + "<br>");
    document.write("RegExp.lastIndex為" + RegExp.lastIndex + "<br>");
    document.write("RegExp.lastMatch為" + RegExp.lastMatch + "<br>");
    document.write("RegExp.lastParen為" + RegExp.lastParen + "<br>");
    document.write("RegExp.leftContext為" + RegExp.leftContext + "<br>");
    document.write("RegExp.rightContext為" + RegExp.rightContext + "<br>");
    document.write("RegExp.$1為" + RegExp.$1 + "<br>");
    document.write("RegExp.$2為" + RegExp.$2 + "<br>");
    document.write("RegExp.$3為" + RegExp.$3 + "<br>");
    document.write("RegExp.$4為" + RegExp.$4 + "<br>");
    document.write("arr.index為" + arr.index + "<br>");
    document.write("arr.input為" + arr.input + "<br>");
    document.write("arr.lastIndex為" + arr.lastIndex + "<br>");
    document.write("返回數組的元素個數為" + arr.length + "<br>");
    document.write("返回數組的內容為[");
    for(var i=0; i<arr.length; i++){
        if(i<arr.length-1)
            document.write("\"" + arr[i] + "\",");
        else
            document.write("\"" + arr[i] + "\"]</p>");
    }
}
</script>
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.