JavaScript中正則的使用(1)

經過例子學習正則中的常見語法(1)

  1. $num
    javascript var a = 'javascript'; var b = a.replace(/(java)(script)/gi, '$2-$1'); console.log(b);//script-java
    • 正則以/開始和結尾,中間爲要匹配的表達式
    • g表示全局搜索,i表示忽略大小寫,m表示多行匹配
    • $1$2表示第1個和第2個子表達式(用小括號包裹)匹配到的文本,如例子所見,$1java$2script
  2. $&
    javascript var a = 'javascript'; var b = a.replace(/a/gi, '$&-$&'); console.log(b);//ja-ava-ascript
    • $&表示匹配到的文本,即$&匹配到a
    • javascript中的a替換爲a-a,因此最終結果爲ja-ava-ascript
  3. $`
    javascript var a = 'javascript'; var b = a.replace(/(script)/gi, '$&-$`'); console.log(b);//javascript-java
    • $`表示匹配到的文本的左側文本,即$`匹配到java
    • script替換爲script-java,因此最終結果爲javascript-java
  4. $'
    javascript var a = 'javascript'; var b = a.replace(/(java)/gi, '$&-$\''); console.log(b);//java-scriptscript
    • $'表示匹配到的文本的右側文本,即$'匹配到script
    • java替換爲java-scripr,因此結果爲java-scriptscript
    • 注意:$&-$\',若是用'包裹結果,須要\ 轉義,若是用"包裹結果,則不須要轉義
  5. $$
    javascript var a = 'javascript'; var b = a.replace(/a/gi, '$$'); console.log(b);//j$v$script
    • $$表示對$進行轉義輸出
    • a替換爲$
  6. replace
    ```javascript
    var a = 'this is a javascript text';
    var b = a.replace(/\b(\w)(\w*)\b/g, fn);
    console.log(b);//This Is A Javascript Textjavascript

    function fn($1, $2, $3) {
    return $2.toUpperCase() + $3;
    }
    ``*replace接受兩個參數,第一個爲正則表達式,第二個能夠爲文本,也能夠爲函數 *\b表示單詞的分界線 *\w表示字母、數字、下劃線或者漢字 *fn中共接收了三個參數 *$1表示整個正則表達式匹配到的文本,依次爲thisisajavascripttext*$2表示第一個子表達式(\w)匹配到的文本,分別爲tiajt*$3表示第二個子表達式(\w*)匹配到的文本,分別爲hiss(空的內容)avascriptext*$2.toUpperCase()$2匹配到的文本轉換爲大寫 * 結果This Is A Javascript Text`
    java

  7. replacefn詳細內容
    javascript var a = 'this is a javascript text'; var b = a.replace(/\b(\w)(\w*)\b/g, fn); console.log(b); //this-t-his-0-this is a javascript text& is-i-s-5-this is a javascript text& a-a--8-this is a javascript text& javascript-j-avascript-10-this is a javascript text& text-t-ext-21-this is a javascript text& function fn($1, $2, $3, $4, $5) { return $1 + '-' + $2 + '-' + $3 + '-' + $4 + '-' + $5 + '&'; }
    • 在例子6中介紹了$1, $2, $3,其實$2$3能夠有多個,數量隨正則中的子表達式變化,由於/\b(\w)(\w*)\b/中只有兩個子表達式,因此只有$2$3
    • fn最後兩個參數(不必定是$4$5),分別表示正則匹配到的文本($1)開始位置(如匹配到javascript$4就是javascript在整段文本中的開始位置10)和整個要匹配的文本(this is a javascript text
    • 根據以上分析,結果以下
相關文章
相關標籤/搜索