Javascript JQuery-使用给定的正则表达式搜索元素值

Javascript JQuery-使用给定的正则表达式搜索元素值,javascript,jquery,html,regex,Javascript,Jquery,Html,Regex,假设我有一些这样的元素 <div class="friendListItem" data-user-name="Andi">Andi<div> <div class="friendListItem" data-user-name="John">John<div> <div class="friendListItem" data-user-name="Anderson">Anderson<div> <div class=

假设我有一些这样的元素

<div class="friendListItem" data-user-name="Andi">Andi<div>
<div class="friendListItem" data-user-name="John">John<div>
<div class="friendListItem" data-user-name="Anderson">Anderson<div>
<div class="friendListItem" data-user-name="John Smith">John Smith<div>
<div class="friendListItem" data-user-name="George">George<div>
但它仅在准确输入文本时返回元素。 我还需要regex模式不区分大小写,所以如果我键入“john”,它仍然会匹配“john”。
我该怎么做呢?

我会使用一个简单的
indexOf()
,因为它比regex方法更快,可以将所有内容都小写以进行比较。 演示可能看起来有点奇怪,因为它首先隐藏了所有内容,但您明白了:

$('inputSearchFriends')。在('input',函数(){
const searchText=this.value.trim();
$('.friendListItem').hide();
$('.friendListItem').filter(函数(){
返回此.attributes['data-user-name'].value.toLowerCase().indexOf(searchText.toLowerCase())>-1;
}).show();
});

安迪
约翰
安德森
约翰·史密斯
乔治

我会使用一个简单的
indexOf()
,因为它比regex方法更快,可以将所有内容都小写以进行比较。 演示可能看起来有点奇怪,因为它首先隐藏了所有内容,但您明白了:

$('inputSearchFriends')。在('input',函数(){
const searchText=this.value.trim();
$('.friendListItem').hide();
$('.friendListItem').filter(函数(){
返回此.attributes['data-user-name'].value.toLowerCase().indexOf(searchText.toLowerCase())>-1;
}).show();
});

安迪
约翰
安德森
约翰·史密斯
乔治

尝试更改此行:

const re = new RegExp(searchText);
致:


尝试更改此行:

const re = new RegExp(searchText);
致:


看看这个。这不是我想要的你的代码工作,因为忽略案例使用
newregexp(searchText,“gi”)
和@LonnieBest链接答案会工作看看这个。这不是我想要的你的代码工作,因为忽略案例使用
newregexp(searchText,“gi”)
和@LonnieBest-linked-answer将起作用您不使用我的'new RegEx'语句,不使用'new'声明变量会更快吗?是的,indexOf()肯定比RegEx@sartherisstormhammer快您不使用我的'new RegEx'语句,不使用'new'声明变量会更快吗?是的,indexOf()绝对比regex@SartherisStormhammer快
const re = new RegExp(searchText,'gi');