var content="xx<br>xxxx <br>@yyy<span class='black'></span>yyy yyy y ";
var rgx=/(.*(<br>))(.*<span class='black'><\/span>.*?\s)/gmi;
var result = content.replace(rgx,"$3");
alert(result);
我需要得到这个 - &gt; “@yyy<span class='black'></span>yyy
”但相反,我得到了这个 - &gt; “@yyy<span class='black'></span>yyy yyy y
”,为什么呢?
当我应用此正则表达式时 - &gt; /(.*(<br>))(.*<span class='black'><\/span>.*?\s)/
这似乎按预期工作,match this - &gt; “xx<br>xxxx <br>@yyy<span class='black'></span>yyy
”。
结果我只想得到这个“@yyy<span class='black'></span>yyy
”。
答案 0 :(得分:1)
var txt = "xx<br>xxxx <br>@yyy<span class='black'></span>yyy yyy y ";
var res = (/<br>([^<]+<span class='black'><\/span>\S+\s)/gmi.exec(txt)||'')[1];
console.log(res); // "@yyy<span class='black'></span>yyy " // or undefined if not found
回答你的“为什么我在使用…yyy yyy y
时<{1}} - 嗯,因为这正是….*?\s
所做的:
获取任何字符零次或多次,包括最后一个空格:“yyy yyy y
“