javascript includes()不区分大小写

javascript includes()不区分大小写,javascript,regex,Javascript,Regex,我有一个字符串数组,需要循环并与另一个传入的字符串进行检查 var filterstrings = ['firststring','secondstring','thridstring']; var passedinstring = localStorage.getItem("passedinstring"); for (i = 0; i < filterstrings.lines.length; i++) { if (passedinstring.inclu

我有一个字符串数组,需要循环并与另一个传入的字符串进行检查

var filterstrings = ['firststring','secondstring','thridstring'];
var passedinstring = localStorage.getItem("passedinstring");

for (i = 0; i < filterstrings.lines.length; i++) {
    if (passedinstring.includes(filterstrings[i])) {
        alert("string detected");
    }
}
var filterstrings=['firststring','secondstring','thridstring'];
var passedinstring=localStorage.getItem(“passedinstring”);
对于(i=0;i

如果
var passedString
包含类似
FirsTsTriNg
FirsTsTriNg
的字符串,如何确保在过滤时忽略区分大小写(最好使用regex)?

您只需将passedString转换为小写即可

var passedinstring = localStorage.getItem("passedinstring").toLowerCase();
var filterstrings = ['firststring','secondstring','thridstring'];
var passedinstring = localStorage.getItem("passedinstring");

// convert each string from filterstrings and passedinstring to lowercase
// to avoid case sensitive issue.
filteredStrings = filterstrings.filter((str) => str.toLowerCase().includes(passedinstring.toLowerCase())

将filterstring和PassedString转换为小写并比较

var filterstrings = ['firststring','secondstring','thridstring'];
var passedinstring = 
localStorage.getItem("passedinstring").toLowerCase();

for (i = 0; i < filterstrings.lines.length; i++) {
   if (passedinstring.includes(filterstrings[i].toLowerCase())) {
       alert("string detected");
   }
}
var filterstrings=['firststring','secondstring','thridstring'];
var passedinstring=
localStorage.getItem(“passedString”).toLowerCase();
对于(i=0;i
您可以先从
过滤器字符串创建RegExp

var filterstrings = ['firststring','secondstring','thridstring'];
var regex = new RegExp( filterstrings.join( "|" ), "i");
然后
测试
是否存在
passedString

var isAvailable = regex.test( passedinstring ); 
ES6数组方法可以简单地将解决方案转换为单行,使用方法确定数组条目中是否包含某个值,并结合方法将其转换为小写

var passedinstring = localStorage.getItem("passedinstring").toLowerCase();
var filterstrings = ['firststring','secondstring','thridstring'];
var passedinstring = localStorage.getItem("passedinstring");

// convert each string from filterstrings and passedinstring to lowercase
// to avoid case sensitive issue.
filteredStrings = filterstrings.filter((str) => str.toLowerCase().includes(passedinstring.toLowerCase())

我的选择是将上限与上限进行比较,或者将下限与上限进行比较,以转换两侧(我经常在SQL中这样做):

var filterstrings=['firststring','secondstring','thirDstrIng'];
var passedString='ThIrDsTrInG3';
//用于,只是为了让它更可读
for(过滤器字符串中的过滤器字符串){
if(passedString.toUpperCase().includes(filterstring.toUpperCase())){
警报(“检测到字符串”);
}
}

提示检测到
字符串

使用
toLowerCase()
修复了区分大小写的问题。比较时,它将所有
字符串
转换为小写

var product=productList.filter((x) => x.Name.toLowerCase().includes(("Active").toLowerCase()))

我相信这会更简单、更短、更容易理解

  const q = new RegExp(query, 'i');

  filteredUsers = users.filter((user: User) => {
    return (
      user.entity.short.match(q) ||
      user.firstname.match(q) ||
      user.lastname.match(q)
    );
  });

使用一个普通的大小写或创建一个正则表达式并使用类似于
的东西。一些
和它一起使用。这不应该被标记为重复。与正则表达式相比,使用
includes
的优势在于它涵盖了字符串包含正则表达式特殊字符的情况。好吧,它在给定的情况下工作,但我想我们也希望它以另一种方式工作。。。(即过滤后的字符串也有大写字母)请注意,firststringtest在此也将返回true。在ES5中,
filterString.map((a)=>{return a.toLowerCase()}).includes(passedString.toLowerCase())
可能是这个问题的解决方案。
filterString
必须转义,否则可能会导致正则表达式损坏或出现意外行为。这比.includes()慢多少这是一个很好的答案!这是一个非常简单的单线解决方案。我在过滤器中使用
filteredStrings
行,我只是检查封装过滤器语句中的长度是否>0谢谢-当人们用最新的功能回答老问题时,我总是很感激!老问题的最佳答案。恭喜。感谢您提供了简单但最好的解决方案,使用它会更安全。纯
.toLowerCase()
可能会出现问题-有关详细信息,请参阅Jon Skeet在YouTube上的演示文稿。这似乎是在过滤另一组数据…并假设
查询
在正则表达式中不包含任何具有特殊意义的字符。您好!抱歉,使用了我自己的代码