js通过正则匹配没有内容的空标签
短视频,自媒体,达人种草一站处事 这篇文章首要先容了js通过正则匹配没有内容的空标签,必要的伴侣可以参考下 js 怎样正则匹配没有内容的空标签并移除去? 譬喻 <span></span> <p></p> 等等 正则 /<([a-z]+?)(?:s+?[^>]*?)?>s*?</1>/ig html='<div>'+ ptn=/<([a-z]+?)(?:s+?[^>]*?)?>s*?</1>/ig 通过在线测试器材 由于默认编辑器中,span没有样式的没有须要 str=str.replace(/(.[^<>]*)</span>/ig,"$1"); 先看下面的位置 零宽断言 接下来的四个用于查找在某些内容(但并不包罗这些内容)之前或之后的对象,也就是说它们像b,^,$那样用于指定一个位置,这个位置应该满意必然的前提(即断言),因此它们也被称为零宽断言。最好照旧拿例子来声名吧: 断言用来声明一个应该为真的究竟。正则表达式中只有当断言为真时才会继承举办匹配。 (?=exp)也叫零宽度正猜测先行断言,它断言自身呈现的位置的后头能匹配表达式exp。好比bw+(?=ingb),匹配以ing末了的单词的前面部门(除了ing以外的部门),如查找I'm singing while you're dancing.时,它会匹配sing和danc。 (?<=exp)也叫零宽度正回首后发断言,它断言自身呈现的位置的前面能匹配表达式exp。好比(?<=bre)w+b会匹配以re开头的单词的后半部门(除了re以外的部门),譬喻在查找reading a book时,它匹配ading。 若是你想要给一个很长的数字中每三位间加一个逗号(虽然是从右边加起了),你可以这样查找必要在前面和内里添加逗号的部门:((?<=d)d{3})+b,用它对1234567890举办查找时功效是234567890。 下面这个例子同时行使了这两种断言:(?<=s)d+(?=s)匹配以空缺符隔断的数字(再次夸大,不包罗这些空缺符)。 负向零宽断言 前面我们提到过怎么查找不是某个字符或不在某个字符类里的字符的要领(反义)。可是假如我们只是想要确保某个字符没有呈现,但并不想去匹配它时怎么办?譬喻,假如我们想查找这样的单词--它内里呈现了字母q,可是q后头跟的不是字母u,我们可以实行这样: bw*q[^u]w*b匹配包括后头不是字母u的字母q的单词。可是假如多做测试(可能你思想足够敏锐,直接就调查出来了),你会发明,假如q呈此刻单词的末了的话,像Iraq,Benq,这个表达式就会堕落。这是由于[^u]总要匹配一个字符,以是假如q是单词的最后一个字符的话,后头的[^u]将会匹配q后头的单词脱离符(也许是空格,可能是句号或其余的什么),后头的w*b将会匹配下一个单词,于是bw*q[^u]w*b就能匹配整个Iraq fighting。负向零宽断言能办理这样的题目,由于它只匹配一个位置,并不用费任何字符。此刻,我们可以这样来办理这个题目:bw*q(?!u)w*b。 零宽度负猜测先行断言(?!exp),断言此位置的后头不能匹配表达式exp。譬喻:d{3}(?!d)匹配三位数字,并且这三位数字的后头不能是数字;b((?!abc)w)+b匹配不包括持续字符串abc的单词。 同理,我们可以用(?<!exp),零宽度负回首后发断言来断言此位置的前面不能匹配表达式exp:(?<![a-z])d{7}匹配前面不是小写字母的七位数字。 一个更伟大的例子:(?<=<(w+)>).*(?=</1>)匹配不包括属性的简朴HTML标签里面的内容。(?<=<(w+)>)指定了这样的前缀:被尖括号括起来的单词(好比也许是),然后是.*(恣意的字符串),最后是一个后缀(?=</1>)。留意后缀里的/,它用到了前面提过的字符转义;1则是一个反向引用,引用的正是捕捉的第一组,前面的(w+)匹配的内容,这样假如前缀现实上是的话,后缀就是了。整个表达式匹配的是和之间的内容(再次提示,不包罗前缀和后缀自己)。 这个解读 1、与都思量在内 s匹配空字符*暗示多个空字符都可以,?是暗示前面的无关紧要。 2、(?!:style) 暗示右侧不能有style的才可以匹配,由于有的必定有效。并且不获取,以是这个括号不是$1 3、(.[^<>]*) 就是匹配中间的数据了。 这两天刚开始研究这个,写了好几个正则,先分享出来,看各人能看懂吗上面都是一些好对象,详细的本身研究吧。 //增强替代首要是思量多个br的题目 return str; 上面都是一些好对象,详细的本身研究吧。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |