通过jQuery搜索子字符串

时间:2018-08-24 07:23:24

标签: javascript jquery html string

我的JSP有以下div

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

我必须搜索类“ detail”是否具有子字符串“ Bond James Bond”

由于邦德·詹姆斯·邦德在中间有“ br” ,如何搜索此字符串是否具有子字符串

我尝试在jQuery中显示/ n和br的多种组合

alert($('.detail').text().toLocaleLowerCase().indexOf('bond\n james bond'));

 alert($('.detail').text().toLocaleLowerCase().indexOf('bond<br> james bond''));

,但始终返回-1。提前帮助我

2 个答案:

答案 0 :(得分:3)

您在这里有两个问题。首先,在这种情况下,text()的响应将删除元素中间的<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'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <td class="detail">Hello my name is Bond
      <br/>James Bond
    </td>
  </tr>
</table>

答案 1 :(得分:0)

使用text()仅获取td的内部文本(不带任何HTML),然后删除它们之间的所有多余空格。

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

const searchString = 'Bond James Bond';
const regex = new RegExp(searchString);
const text = $('.detail:first').text().replace(/\s+/g, ' ');

console.log(text, '-', regex.test(text));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <td class="detail">Hello my name is Bond
      <br/>James Bond
    </td>
  </tr>
</table>