匹配两个特殊字符
匹配两个特殊字符中间的内容,比如¥1234¥ 要匹配两个¥之间的数字:
// 使用正则
let reg = /(?<=¥).*?(?=¥)/;
let str = '¥1234¥';
// 使用
str.match(reg); // 输出 ['1234']
在这里不包含前面匹配的字符写法(?<=要匹配的开始字符),不包含后面要匹配的字符写法(?=要匹配的结束字符)
有了以上直接匹配特殊字符中间内容的方式,如果带上所要匹配的字符就更直接了
'¥1234¥'.match(/¥.*?(?=¥)/)[0]; // 输出 ¥1234
'¥1234¥'.match(/(?<=¥).*?¥/)[0]; // 输出 1234¥
'¥1234¥'.match(/¥.*?¥/)[0]; // 输出 ¥1234¥
不要觉得最后一种方式没有用的感觉,最后一种是在例如:
// 这样的字符串中抽离,以上其他方式一样,只是根据需要的结果使用就好
'das23213123¥1234¥dsaada31'.match(/¥.*?¥/)[0]; // 输出 ¥1234¥
匹配HTML标签之间的内容
有了上方匹配特殊字符的方式,直接将特殊字符改为html的标签即可,这里采用的单一标签的匹配方式,比如只匹配a标签或p标签等,话不多说上代码:
let dom = '<div><span>这个是内容一</span><span style="color: red;">这个是内容二</span></div>';
let domReg = /(?<=(<span[^>]*?>)).*?(?=(<\/span>))/g;
dom.match(domReg);
输出如下:
这是以span标签为例,你也可以将span改成其他标签,div,p标签等都可以。
批量处理匹配到的html内容
根据上边html的正则匹配,我们来对匹配到的内容做进一步的处理,经常会遇到要对某一种标签的内容增加修饰,比如将颜色统一改为绿色,代码如下:
let dom = '<div><span>这个是内容一</span><span style="color: red;">这个是内容二</span></div>';
let domReg = /(?<=(<span[^>]*?>)).*?(?=(<\/span>))/g;
dom = dom.replace(domReg, (str) => {
console.log('正则匹配到的内容', str);
return `<span style="color: green;">${str}</span>`;
});
完整代码实例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>JS匹配特殊字符之间的内容以及标签内容</h1>
<div id="content"></div>
</body>
<script>
let dom = '<div><span>这个是内容一</span><span style="color: red;">这个是内容二</span></div>';
let domReg = /(?<=(<span[^>]*?>)).*?(?=(<\/span>))/g;
dom = dom.replace(domReg, (str) => {
console.log('正则匹配到的内容', str);
return `<span style="color: green;">${str}</span>`;
});
document.getElementById('content').innerHTML = dom;
</script>
</html>
以上就是这次所分享内容。
如有疑问可以留言,也可以到QQ群一起探讨:
QQ群1: 657011407, QQ群2: 492593055,也可以到微信找我 shenzhipeng1023
版权声明:本文为jason_renyu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。