Javascript 通过jQuery搜索子字符串

Javascript 通过jQuery搜索子字符串,javascript,jquery,html,string,Javascript,Jquery,Html,String,我的JSP有以下div <td class="detail">Hello my name is Bond <br/>James Bond </td> 及 alert($('.detail').text().toLocaleLowerCase().indexOf('bondjames bond')); 但它总是返回-1。请帮助我,提前感谢用于仅获取td的内部文本(不含任何HTML),然后删除中间的所有多余空格 然后,您可以简单地将它与从文本中创建的正则表达式

我的JSP有以下div

<td class="detail">Hello my name is Bond
<br/>James Bond
</td>

alert($('.detail').text().toLocaleLowerCase().indexOf('bond
james bond'));
但它总是返回-1。请帮助我,提前感谢

用于仅获取
td
的内部文本(不含任何HTML),然后删除中间的所有多余空格

然后,您可以简单地将它与从文本中创建的正则表达式进行匹配。请参见下面的演示:

const searchString='Bond James Bond';
const regex=new RegExp(searchString);
常量text=$('.detail:first').text().replace(/\s+/g');
console.log(文本“-”,regex.test(文本))

你好,我叫邦德
詹姆斯·邦德

这里有两个问题。首先,在这个例子中,<代码>文本()/代码>的响应将删除元素中间的<代码> BR/> 标签(因为它是HTML)。其次,删除将留下大量空白和换行符。因此,文本的输出将是:

hello my name is bond
      james bond
在执行
indexOf()
检查之前,可以使用正则表达式删除换行符和其他空格:

var text=$.trim($('.detail').text()).toLocaleLowerCase().replace(/\s+/g');
console.log(text.indexOf('bond-james-bond'))

你好,我叫邦德
詹姆斯·邦德

我首先将调用text()的结果放在一个警报中,这样您就可以看到它将返回给您的内容。。。这可能会帮助你找到你需要寻找的东西。您可能需要使用\n\r(或者它是\r\n?)作为新行-不确定\n是否足够…嘿,Rory,它在IE 8中不起作用。出现的错误是“对象不支持属性或方法‘trim’”。是的,trim()。你可以用正则表达式来代替。虽然在本例中技术上不需要它,但在处理文本输入之前完全清理文本输入仍然是一种良好的做法。请您给我一个小演示,就像您为trim提供的一样。请检查:或者使用
$.trim()
。我为你更新了答案
 alert($('.detail').text().toLocaleLowerCase().indexOf('bond<br> james bond''));
hello my name is bond
      james bond