Javascript 正则表达式匹配与jQuery不同

Javascript 正则表达式匹配与jQuery不同,javascript,jquery,regex,Javascript,Jquery,Regex,在使用常规JS和jQueryV1.4.2时,我从正则表达式匹配中得到了不同的结果,但我无法找出原因。只应返回匹配字符串。 我使用jQuery通过父ID使用.html()获取整个表。textToSearch被缩短了 textToSearch = '<tr><th colspan="5">my match with spaces here (<a href='; pattern = /(?=<th colspan="\d">).*(?= \()/i; exp

在使用常规JS和jQueryV1.4.2时,我从正则表达式匹配中得到了不同的结果,但我无法找出原因。只应返回匹配字符串。 我使用jQuery通过父ID使用.html()获取整个表。textToSearch被缩短了

textToSearch = '<tr><th colspan="5">my match with spaces here (<a href=';
pattern = /(?=<th colspan="\d">).*(?= \()/i;
expected_result = 'my match with spaces here';

var match = textToSearch.match(pattern);
jQuery的html()将不会以您期望的上述格式返回html,甚至可能在不同浏览器之间有所不同。返回的字符串是根据浏览器对DOM树的表示构建的,因此看起来与大多数浏览器的“查看源代码”功能完全不同。出于这个原因(以及其他原因),用正则表达式解析HTML不是一个好主意

我不清楚你为什么用正则表达式。如果您使用html()获取html,那么您也可以只过滤节点并获取它们的文本。这将是一个更加稳健的解决方案。例如,以下代码可以为您完成此工作:

var result = $("table th[colspan]")[0].firstChild.nodeValue;
或者您想要该
元素的完整文本

var result = $("table th[colspan]").text();

不管是哪种方式,几乎可以肯定有一种更好的方法可以在不使用正则表达式的情况下实现所需的匹配。

你说的“在jQuery中”是什么意思
String.match()
与jQuery库无关。我指的是jQuerys.html()与作为静态文本复制的“查看源代码”表。为您提供正确答案,因为它引导我找到了解决方案。我之所以使用regex,是因为它实现了“无论完成什么工作都会被使用”,这也是我所能想到的。
var result = $("table th[colspan]").text();