function fun() {
var temp = document.getElementById('DIV2').innerHTML;
var str = temp;
var res = str.replace(/(\s(\S*m)\s)/gi, ' <span class="red">$1</span> '); // 0.5 -- 1m -- etc
var res2 = res.replace(/\s(\S*metre)\s/gi, '<span class="red">$1</span> '); // 1meter 2meter
var res3 = res.replace(/\s(\S\s*metre)\s/gi, '<span class="red">$1</span> '); // 1 meter 2 meter
document.body.innerHTML = res3;
}
<body>
<div id="text">
The Basic High Speed HDMI 0.5m Cables with Ethernet are 0.5m suitable for use with HDMI.
Home Theater, 1m Games Consoles (including Nintendo Wii U), 1m Blu-rays, Cable or Satelite 1m boxes and Projectors.
HDMI Cables provides the most reliable digital signal transfer and the purest picture.
</div>
</html>
上面的代码在字符串中匹配"0.5m, 1m, 1 metre"
等,但是它会搜索我想在第一次出现模式时停止的行中的所有匹配项,并在下一行继续。
有人可以帮忙吗?
答案 0 :(得分:3)
这应该做你想要的:
var s = "1m 2m 3m\n2m 1m 5m",
re = /^.*?([\d.]+(?:m|metre))/gim;
console.log(s.replace(re, '<span class="red">$1</span>'));
"<span class="red">1m</span> 2m 3m
<span class="red">2m</span> 1m 5m"
它使用/m
修饰符,以便^
具有“行首”的含义,而不仅仅是“主题的开头”。然后,它会查找匹配<digits-or-dot>m
的第一件事并执行替换。
如果您的内容包含<br>
,那么这些内容显然不会被视为换行符,因此您需要先替换它们:
s = s.replace('<br>', "<br>\n");
答案 1 :(得分:0)
如何在正则表达式后删除g
?