本帖最后由 吾爱咖啡 于 2022-9-13 01:21 编辑
我看大部分网友都没明白我在问什么,或许是我没解释清楚,所以我再解释一下。
我在网页上截取的字符串格式如下,有3种格式:
[JavaScript] 纯文本查看 复制代码 var str1 = '9.12</strong>床前明月光<span style="color:#0066ff;"><strong>疑是地上霜</strong></span></p>';
var str2 = '9.12</strong>床前明月光<strong><span style="color:#0066ff;">疑是地上霜</strong></span></p>';
var str3 = '9.12</strong>床前明月光<span style="color:#0066ff;"><b>疑是地上霜</b></span></p>';
var v = str1.replace(/<.+?><.+?>/, "\n答案:");
//v = v.replace(/<.+?>/g, "");
console.log(v);
执行替换后结果如下:
[JavaScript] 纯文本查看 复制代码 9.12
答案:疑是地上霜</strong></span></p>
我只是想替换中间的两个尖括号<><>,用一个表达式匹配三种格式,但不知道为什么会把前面的也匹配到了。百度了两个多小时,都没找到答案。当我尝试把表达式改为/<[a-z].+?><.+?>/,意外达成了我想要的结果:
[JavaScript] 纯文本查看 复制代码 9.12</strong>床前明月光
答案:疑是地上霜</strong></span></p>
只要把上面的注释符去掉,就能达成我想要的最终结果:
[JavaScript] 纯文本查看 复制代码 9.12床前明月光
答案:疑是地上霜
我想知道为什么/<.+?><.+?>/会匹配到</strong>床前明月光<span style="color:#0066ff;"><strong>,而不是只匹配<span style="color:#0066ff;"><strong>呢?(我不知道这算什么,没有关键词,不好百度。)
--------------------------------------------------------------------------------------------------
4楼这位网友@HA? 回答的第3条好像就是答案,以后我再写表达式会注意的,谢谢! |