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

把处理过的<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>后,整个字符串应该是这样的$8`6()4ID[WDGMP_LENJJ2I.png

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

采用str.replace(new RegExp("<user[^>]*>", "g"), " ")
全局正则匹到符合的内容,然后过滤掉(忽略中间内容9IQ_YG3SGM2G{T$J\)\]7\[$JP.png

接下来就是见证奇迹的时刻9IQ_YG3SGM2G{T$J\)\]7\[$JP.png
正常匹配到了,只要结构一样,里面有多个也没问题,正则太有魅力了!


码工思博
85 声望10 粉丝