正則表達式中 的$1,$2與實際應用


  $1,$2表達的是小括號分組里面的內容:$1是第一個小括號里的內容,$2是第二個小括號里面的內容,依此類推。

  比如(\\d{4})(\\d{2})(\\d{2})  匹配"20190919"$1是第一個括號里匹配的2019$2是第二個括號里匹配的09$3是第三個括號里匹配的19。

  然后可以利用實現一個簡單的時間格式化函數

// 日期轉換:yyyymmdd -> yyyy-mm-dd,type=true時,yyyy-mm-dd -> yyyymmdd
dateFormate (date, type) { if (date) { return type ? date.replace(/-/g, '') : date.replace(/^(\d{4})(\d{2})(\d{2})$/, '$1-$2-$3') } },

  "20112233".replace(/^(\d{4})(\d{2})(\d{2})$/, "$1-$2-$3")

  "20112233".replace(/(\d{4})(\d{2})(\d{2})/, "$1-$2-$3")

   str.replace(reg,function(){}) 應用的地方很多啊,最基本的就是比如 str 是一串數字,比如你要把這些數字替換成大寫的漢字

var ary=["","","","","",""] "123456".replace(/\d/g,function(i){ return ary[i - 1]; })

  還有一種用法就是 不替換 字符串,只是利用 replace 可以匹配幾次,這個 function 就執行幾次的特性來做一些事情,比如格式化時間字符串等等。

  $1--$9 是RegExp 自帶的,只要放生了匹配就會有。 test exec str的replace 都會有。代表的是 分組,即小括號里面的小正則 捕獲到的內容。

  /^(\d{4})[\/-](\d{1,2})[\/-](\d{1,2})$/,比如這個 簡單的匹配 年月日的正則,我們就可以通過 $1 $2 $3 獲取到並進行處理。

var reg=new RegExp("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gmi"); var url="http://www.qidian.com/BookReader/1017141,20361055.aspx"; var rep=url.replace(reg,"$1ShowBook.aspx?bookId=$2&chapterId=$3"); 你可能注意到了,在reg正則表達式里的幾對"()",比如`("(http://www.qidian.com/BookReader/)` ,`(\\d+)`,
$n就指的是匹配到的第n個括號里的內容,
$n主要是用在后面的程序需要引用前面的正則匹配到的內容時。
在這個例子里:
$1 : http://www.qidian.com/BookReader/ $2 : 1017141 $3 : 20361055

  你看到上面的replace實際上是用冒號后面的內容替換冒號前面的“$n”,而冒號后面的內容實際上就是正則里的“()”分組正則表達式在url里匹配到的內容


免責聲明!

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



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