js正则表达式中replace的$0,$1是什么?

各位大神,小弟在看正则中replace,始终不得其解,不知道
1.如何使用
2.使用场景
3.$0...9分别指的什么?

谢谢

阅读 66.8k
4 个回答

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里匹配到的内容
,

第1、使用就是字符串.replace();
例如 `
var str = 'this is tom';
var strReg = str.replace(/tom/g,'jack');
console.log(strReg);//this is jack意思就是在字符串str中全局搜索tom这个字符,并将他换成jack`;
第2、使用场景这个应该没有什么吧,想用的话你可以到处用只要你喜欢,或者不会带来其他问题的话,应该没有什么限制的。
第3、那个$0,$1....$9是表示正则匹配的组。

var str = '123-mm';
var strReg = str.replace(/(\d+)-([A-Za-z]+)/g,'$2');
console.log(strReg)//mm  上面那段$2这个就是表示正则第二组个匹配到的内容
新手上路,请多包涵

每一个括号是一个分组 $0-$9代表的分组

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏