如何在javascript中使用正则表达式检索div中的内容

时间:2013-12-20 13:50:09

标签: javascript regex

我正在尝试获取我从回复中获得的内容。内容在div标记内,但是当T尝试运行正则表达式时,我显示它时没有得到任何内容。如果我使用正则表达式测试程序,我会得到我想要的内容。以下是我正在使用的代码:

var myString = "<div class="zdc-box zdc-error">
Unknown column 'order_numbe' in 'field list'
</div>"
var myRegexp = "/<div class=\"zdc-box zdc-error\">\s+(.*)\s+.*?</div>/";
var match = myRegexp.exec(myString);
alert(match[1]); 

任何人都可以帮助我,让我知道我做错了什么吗?

3 个答案:

答案 0 :(得分:1)

使用exec和分组修改以下答案(感谢@JDB)

var myString = "<div class=\"zdc-box zdc-error\">Unknown column 'order_numbe' in 'field list'</div>"
var myRegexp = new RegExp("<div class=\"zdc\-box zdc-error\">(.*?)</div>", "g")
var match = myRegexp.exec(myString);
alert(match[1]);

答案 1 :(得分:1)

抱歉没有以您可能期望的方式回答您的问题,但使用正则表达式似乎是错误的方法。你真正想做的是将你的html片段转换为DOM元素,然后解析其内容:

var element = document.createElement("div");
element.innerHTML = "<div class='zdc-box zdc-error'>Unknown column 'order_number' in 'field list'</div>";
var myString = element.querySelector('.zdc-box').innerHTML;
alert(myString);

这是一种非常(更清洁)的方法。显然,有更多的方法来获取内容而不是querySelector,这只是众多方法中的一个......

编辑:例如:element.childNodes ...

答案 2 :(得分:0)

你可以试试这个:

var myRegexp = /<div class="zdc-box zdc-error">\s*([\s\S]*?)\s*<\/div>/;