作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面的示例是我想要的突出显示类型的演示(对于 "a"
、"b"
、"c"
和 “d”
):
var reg = new RegExp("(.*?)([a]{1,})(.*?)([b]{1,})(.*?)([c]{1,})(.*?)([d]{1,})(.*?)", "gi");
var txt = "OK, abacd, abcdt, yaaaxxbyycccczzddddg0011".replace(reg,
'$1<mark>$2</mark>$3<mark>$4</mark>$5<mark>$6</mark>$7<mark>$8</mark>$9');
document.getElementById("test").innerHTML = txt;
<body>
<div id="test"></div>
</body>
这里的问题显然是 $n
中 n=9
的限制。但是,如果我想对超过四个字符执行此操作(即没有不合理 限制)怎么办?如何解决?
最佳答案
尝试使用 function as a parameter在 replace()
这更像是@WiktorStribiżew提到的动态模式
var reg = new RegExp(["a", "b", "c", "d"].map(a => "([" + a + "]{1,})(.*?)").reduce((a, i) => a + i, "(.*?)"), "gi");
var txt1 = "OK, abacd, abcdt, yaaaxxbyycccczzddddg0011"
.replace(reg, (m, ...p) => {
p.pop();//pop string
p.pop();//pop offset
return p.reduce((a, i, ix) => a + (ix % 2 ? "<mark>" + i + '</mark>' : i), '')
});
var txt = "OK, abacd, abcdt, yaaaxxbyycccczzddddg0011"
.replace(reg, (m, ...p) => {
p.pop();
p.pop();
return "<br><br>-match-" + m + p.reduce((a, i, ix) => a + "<br>-substring-" + (ix % 2 ? i : "-h-" + i), '')
});
document.getElementById("test").innerHTML = txt1 + txt;
<body>
<div id="test"></div>
</body>
关于javascript - 如何突出显示任意数量的(可能重复的)As,然后是非贪婪匹配器,然后是任意数量的 Bs 等(没有不合理的限制)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39889675/
我是一名优秀的程序员,十分优秀!