我的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。提前帮助我
答案 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>