0

我正在尝试使用RegExpin Javascript(特别是match函数)来查找 HTML 正文中该句子中出现的句子和单词。以下是我拥有的一些伪代码:

<!DOCTYPE html>
<html>
<body id="hello">

<p id="demo">Click the button to display the matches.</p>

<div> <input type="button" value="search" onclick="myFunction('<p id=&quot;demo&quot;>Click the button to display the matches', 'button')" />Try it </div>

<script>
function myFunction(sentence, word)
{
//var str="The rain in SPAIN stays mainly in the plain"; 
//var toMatch = "The rain in SPAIN stays mainly in the plain";
var r = new RegExp(word, 'g');
var oldHTML = document.getElementById("hello").innerHTML;
var n=oldHTML.match(r);
alert("no. of matches = " + n.length);
document.getElementById("demo").innerHTML=n;
}
</script>

</body>
</html>

在上面的 HTML 中,只有一个句子和一个单词 'button' 出现,但搜索次数 = 4 和n = button,button,button,button.

我的问题:
1. 为什么那个 RegExp 会导致 4 次搜索?
2. 如何搜索 HTMLbody部分以使我得到正确的答案?

4

2 回答 2

0
  1. 正如其他人已经说过的那样,您会得到 4 次出现,因为您搜索的是整个 html 标记,而不仅仅是用户可见的文本。
  2. 使用innerText属性而不是innerHTML获得更好的结果。
于 2013-09-11T11:08:09.513 回答
0

您可以使用 jQuery 的 text 函数来获取 body 元素的文本,并从中进行搜索。

e.g 
bodyElement = $("body");
bodyText = bodyElement.text();
于 2013-09-11T11:31:15.190 回答