If 中变量的正则表达式(不区分大小写) - JS/Angular

Roo*_*ife 2 javascript regex angularjs

我试图找到if一个value存储在动态variable中的内容array,同时忽略大小写并且不使用 to.toLowerCase()或 upper。

我所拥有的有效的是:

if ($scope.favoriteItems.indexOf(item.name.toLowerCase()) === -1) {
Run Code Online (Sandbox Code Playgroud)

我想要使​​用正则表达式之类的东西if (item.name 'no matter case is in $scope.favoriteItems)

sam*_*ime 7

你可以这样做:

if ($scope.favoriteItems.some(item => (new RegExp(item.name, 'i')).test(item))) {
  // do something
}
Run Code Online (Sandbox Code Playgroud)

基本上,要创建带有变量的 RegExp,您可以new RegExp()将所需的表达式作为第一个参数,并将任何标志作为第二个参数。

所以,像这样:

var name = 'abc';
new RegExp(name, 'i');
Run Code Online (Sandbox Code Playgroud)

变成:

/abc/i
Run Code Online (Sandbox Code Playgroud)

if ($scope.favoriteItems.some(item => (new RegExp(item.name, 'i')).test(item))) {
  // do something
}
Run Code Online (Sandbox Code Playgroud)

Array.prototype.some函数循环遍历数组中的每一项,并继续执行,直到有一项返回 true。在这种情况下,我们继续循环,直到其中一个与我们的正则表达式匹配(意味着它在数组中),然后停止。

也就是说,除非item.name不仅仅是字符串匹配,否则使用正则表达式测试是巨大的杀伤力,你最好坚持使用你所拥有的。