$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里匹配到的內容