一、目标内容

获取字符串中的坐标数值

二、实现方法

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
标签: JavaScriptJava