我有一个代码可以在表中查找多个单词,但它还不完美。 如果我输入的那些多个单词不按顺序怎么办?例如“John Lennon 151 sf” 和“paul mccartney 753 tj”和我输入“lennon 753 tj”这个词的结果应该是他们两个。但我收到的结果只是约翰·列侬的一排......
这是我的代码
<input id="emp_search" />
<input id="search" type="button" value="search" />
<table>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>number</th>
<th>letters</th>
</tr>
<tr>
<td>John</td>
<td>Lennon</td>
<td>151</td>
<td>sf</td>
</tr>
<tr>
<td>Paul</td>
<td>McCartney</td>
<td>753</td>
<td>tj</td>
</tr>
<tr>
<td>George</td>
<td>Harrison</td>
<td>24</td>
<td>ge</td>
</tr>
<tr>
<td>Ringo</td>
<td>Starr</td>
<td>26</td>
<td>hg</td>
</tr>
</table>
这里是..
if (!RegExp.escape) {
RegExp.escape = function (s) {
return s.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&")
};
}
jQuery(function ($) {
///search this table
$(' #search ').click(function () {
var searchthis = new RegExp($(' #emp_search ').val().replace(/\s+/, '|'), 'i');
$("table").find("tr").slice(1).each(function (index) {
var text = $.trim($(this).text());
$(this).toggle(searchthis.test(text));
});
});
});
我将添加到我的jquery中?提前谢谢:)
答案 0 :(得分:3)
您的替换为:/lennon|753 tj/i
。使用全局标志:
$('#emp_search').val().replace(/\s+/g, '|')
此外,不要忘记修剪输入(“lennon”目前给出/lennon|/i
):
$.trim($('#emp_search').val()).replace(/\s+/g, '|')
这是一个实际可行的演示:http://jsfiddle.net/wared/93jEY/。
最后,您忘记使用escape
:
RegExp.escape($.trim($('#emp_search').val()).replace(/\s+/g, '|'))
答案 1 :(得分:1)
试试这个
问题出在您的正则表达式.replace(/\s+/, '|')
将此.replace(/\s+/, '|')
替换为.replace(/ /g,"|")
修正小提琴:Demo
Replacing spaces with underscores in JavaScript?
修改:忘记更新演示....现在我更新了