正则表达式高级应用

以前学正则表达式,就只学学匹配规则,比如正则去判断是否手机号,邮箱等等。其实这种也不需要特意去手写了,因为能搜出一大堆。

但是有时候的需求还真搜不出来。,比如截取某种字符串的其中一段。

---start---
gggggg
ppppppp
---end---
---start---
aaaaaaa
bbbbbbb
---end---
---start---
eeeeeee
dddddd
---end---

 一位朋友想截取倒数第二个---start---到最后一个---end---结尾。

中间的字符不确定。

(注意以下使用js语法)

其实这种用字符串切割简单很多。

var res = str.substr(str.lastIndexOf("---start---",str.lastIndexOf("---start---") - 1) + 1)

然后用正则是这样

var res = str.replace(/[\s\S]*(---start---[\s\S]*---start---[\s\S]*)/,'$1')

  

不少人看到这个可能一脸懵逼。

其实主要还是 '$1',不太清楚。

这个是取分组的第一组,小括号包的就是一组。

‘$2’就是取第二组,当然你得需要两个括号

这里[\s\S]*就是前面的第一个start,然后小括号是以---start---开头,所以能取到第二个start,然后小括号就是我要取的值了。

 

再来写一个例子

// leftBanDaysStr 是一段a标签 ,想取此标签的text
var leftBanDaysStr ="<a class="ban_detail_url blue" ban_detail_url="1c21cd3f-b489-4ea2-9c74-d4d882493619" title="点击进入详情页">-7</a>";
// 正则截取取数字
var reg = /.*>(.*)<\/a>/;
var leftBanDays = leftBanDaysStr.replace(reg, '$1');

  

 

posted @ 2020-12-22 17:32  SunSAS  阅读(154)  评论(0编辑  收藏  举报