JavaScript学习 -- 正则表达式matchAll
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
一、目标内容
获取字符串中的坐标数值
二、实现方法
1、字符串内容为
let str='<!-- <div class="gt_cut_fullbg_slice" style="background-position:-234px -25px;"></div>-->\n' +
'<!-- <div class="gt_cut_fullbg_slice" style="background-position:0px -75px;"></div>-->\n' +
'<!-- <div class="gt_cut_fullbg_slice" style="background-position:-39px -50px;"></div>-->\n' +
'<!-- <div class="gt_cut_fullbg_slice" style="background-position:-234px -75px;"></div>-->\n' +
'<!-- <div class="gt_cut_fullbg_slice" style="background-position:-156px -75px;"></div>-->\n' +
'<!-- <div class="gt_cut_fullbg_slice" style="background-position:-156px 0px;"></div>-->\n' +
'<!-- <div class="gt_cut_fullbg_slice" style="background-position:-26px -50px;"></div>-->\n' +
'<!-- <div class="gt_cut_fullbg_slice" style="background-position:-143px -75px;"></div>-->\n' +
'<!-- <div class="gt_cut_fullbg_slice" style="background-position:-13px -75px;"></div>-->\n' +
'<!-- <div class="gt_cut_fullbg_slice" style="background-position:-208px 0px;"></div>-->'
2、正则匹配,通过matchAll匹配
let arr=str.matchAll(/"background-position:(-195)px (-50)px;"/igs)
for (const i of arr) {
console.log(i[1],i[2])
}
- i:表示大小写不敏感匹配。
- g:表示全局匹配,即搜索整个字符串,而不仅仅第一个匹配的位置。
- s:表示匹配任何字符,包括换行符,这通常会在字符串跨行时使用。
运行结果:
-195 -50
将上面的正则表达式更通用化
let arr=str.matchAll(/"background-position:-?(\d+)px\s+-?(\d+)px;"/igs)
?:一个或没有-,0开头的坐标没有符号
\d+:一个或多个数字
\s+:一个或多个字符
运行结果:
234 25
0 75
39 50
234 75
156 75
156 0
26 50
143 75
13 75
。。。。。。。。。。。。。。
将得到的数据转换为字符串
for (const i of arr) {
ret+=i[1]+","+i[2]+","
index++;
}
运行结果:
234,25,0,75,39,50,234,75,156,75,156,0,26,50,143,75,13,75,208,0,26,75,91,75,117,0,234,0,221,0,234,50,169,25,169,0,143,50,52,50,221,25,221,75,104,25,91,50,156,25,104,75,1
82,50,78,75,65,25,26,25,78,0,247,75,0,50,169,50,52,25,195,25,130,50,247,50,39,25,195,0,0,0,221,50,208,75,247,0,91,0,104,50,208,25,182,75,13,0,13,50,65,50,91,25,117,25,1
30,75,130,25,247,25,78,50,52,0,182,0,182,25,143,25,156,50,143,0,65,75,117,50,117,75,0,25,26,0,195,75,65,0,39,0,208,50,52,75,39,75,169,75,13,25,78,25,130,0,104,0,195,50,
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |