js正则表达式匹配头尾内容忽略中间

34次阅读

共计 540 个字符,预计需要花费 2 分钟才能阅读完成。

今天遇到了一个问题,在于 app 端交互上有几条评论的 @好友的数据带上了后台处理过的字符串,类似这样

把处理过的 <user id=”xxx” name=”xxx”>XXX</user> 也带上了,这显然是不合理的,我们可以通过字符串的 replace 过滤,但是中间的内容是随机的并不是规定死的 id 和 name 等,这个时候就用到了正则

处理方式如下

这里看几种 replace
《1》str.replace("xx","")这种只能过滤一个
《2》str.replace.(/xx/g,"") 是匹配全局的符合条件的
但是如果条件中也带 /,比如我们上面要过滤的 </user>,就不能用上面这种方法,而是:
《3》str.replace(new RegExp("</user>", "g"), "")过滤文本本身带“/”的
当我们用第三种方式过滤掉 </user> 后,整个字符串应该是这样的

接下来重头戏,用正则匹配首尾内容来去掉 <user id = “xxx” name = “xxx”>
只留下正常的文本内容

采用 str.replace(new RegExp("<user[^>]*>", "g"), "")
全局正则匹到符合的内容,然后过滤掉(忽略中间内容

接下来就是见证奇迹的时刻
正常匹配到了,只要结构一样,里面有多个也没问题,正则太有魅力了!

正文完
 0