无法从正则表达式javascript获得正确的输出

时间:2018-03-12 09:06:34

标签: javascript regex

这是我的文字,只是字符串格式的HTML标签

var str = "<td class='compl-text> I want </div></td></tr> <td class='compl-text'> to extract </div></td></tr> <td class='compl-text'> this text </div></td></tr>";
var s_txt = str.match(/compl-text\s*(.*?)\s*div/g);

console.log(s_txt);

而s_txt的输出为compl-text"><div,compl-text"><div,compl-text"><div,compl-text"><div 但我希望输出为I want, to extract, this text 为了获得这个输出,应该做出哪些改变。

  

P.S这里我不想使用任何循环,只想使用正则表达式。

感谢。

1 个答案:

答案 0 :(得分:1)

您的HTML无效,使用有效的HTML可以执行以下操作:

&#13;
&#13;
var newEl = $('<div>');
newEl.html("<span>Hi, <b>FRIEND</b>, how are you?</span>");

console.log(newEl.text());
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

但是使用无效字符串,您只能在><之间找到字符串

&#13;
&#13;
var str = "<td class='compl-text> I want </div></td></tr> <td class='compl-text'> to extract </div></td></tr> <td class='compl-text'> this text </div></td></tr>";

var regex = />([\w ]+)</g;

var s_txt = str.match(regex).filter(function (a) {
  return a != "> <";
}).map(function (a) {
  return a.replace(/>|</g, "")
}).join();

console.log(s_txt);
&#13;
&#13;
&#13;