0
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"は文字列内などに一致しますが、パターンの最初の出現で停止し、次の行で続行したい行のすべての出現を検索します。

誰でも助けることができますか?

4

2 に答える 2

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");
于 2013-02-14T08:04:36.920 に答える
0

g正規表現の後ろを削除するのはどうですか?

于 2013-02-14T07:56:02.757 に答える