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);
我需要得到这个 ->“@yyy<span class='black'></span>yyy
”,但我得到这个 ->“@yyy<span class='black'></span>yyy yyy y
”。为什么?
当我应用这个正则表达式时 -> /(.*(<br>))(.*<span class='black'><\/span>.*?\s)/
这似乎按预期工作并且match this -> "xx<br>xxxx <br>@yyy<span class='black'></span>yyy
"。
结果我只想得到这个“@yyy<span class='black'></span>yyy
”。
最佳答案
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
...*?\s.*?\s
的作用:
获取任何字符零次或多次,包括最后一个空格:“yyy yyy y
"
关于javascript - 捕获组不能按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48268332/