正则表达式中 的$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里匹配到的内容
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2018-06-15 深入理解VUE样式style层次分析
2017-06-15 浅析如何自定义Java异常类且修改返回http状态码及解决状态码始终是200的问题和303状态码理解