javascript包含()不区分大小写

时间:2018-01-08 06:43:02

标签: javascript regex

假设我有一个过滤字符串数组,我需要循环并检查其他传入的字符串。

//in Swift 3.0 converting string to NSDate with its format
let dateString = self.scoring_date
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z"
dateFormatter.locale = Locale.init(identifier: "en_GB")

self.dateObj = dateFormatter.date(from: dateString! as String )!

dateFormatter.dateFormat = "MM-dd-yyyy"
print("Dateobj: \(dateFormatter.string(from: self.dateObj))")

//converting NSDate to String
let today = Date()
today.toString(dateFormat: "dd-MM")

如果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 passedinstringFirsTsTriNg等字符串,我如何确保在此处忽略区分大小写(最好使用正则表达式)?

8 个答案:

答案 0 :(得分:16)

您可以先从filterstrings

创建 RegExp
var filterstrings = ['firststring','secondstring','thridstring'];
var regex = new RegExp( filterstrings.join( "|" ), "i");
如果test在那里,则

然后passedinstring

var isAvailable = regex.test( passedinstring ); 

答案 1 :(得分:8)

ES6数组方法filter()可以简单地在一行中求解,可以使用includes()方法来确定数组在条目中是否包含某个值。

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.totoLowerCase())

答案 2 :(得分:7)

您只需将传递的字符串转换为小写。

var passedinstring = localStorage.getItem("passedinstring").toLowerCase();

答案 3 :(得分:4)

使用toLowerCase()解决了区分大小写的问题。比较时会将所有string转换为小写。

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

答案 4 :(得分:3)

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

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");
   }
}

答案 5 :(得分:1)

我的选择是将UPPER与UPPER进行比较,或将LOWPER与较低的转换双方进行比较(我在SQL中经常这样做):

    var filterstrings = ['firststring','secondstring','thirDstrIng'];
    var passedinstring =  'ThIrDsTrInG3';
    
    //used for of just to make it more readable
    for (filterstring of filterstrings) {
        if (passedinstring.toUpperCase().includes(filterstring.toUpperCase())) {
            alert("string detected");
        }
    
    }

提示string detected

答案 6 :(得分:0)

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

  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)
    );
  });

答案 7 :(得分:0)

您可以使用返回 boolean.some 方法切换 #include <stdio.h> #include <string.h> void showday ( char *selectedday) { char string[100] = ""; char newline[3] = ""; int result = 0; int output = 0; FILE* openbill = NULL; openbill = fopen ( "bill.txt", "r"); if ( openbill == NULL) { perror ( "bill.txt"); return; } do { string[0] = 0;//set empty string if ( 1 == ( result = fscanf ( openbill, "%2[\n]", newline))) { if ( output) {//enabled printf ( "%s", newline); } if ( '\n' == newline[1]) {//two newlines output = 0;//disable } } else { result = fscanf ( openbill, "%99s", string); if ( strstr ( string, selectedday)) { output = 1;//enable } } if ( output && string[0]) {//enabled and string not empty printf ( "%s ", string); } } while ( EOF != result); fclose ( openbill); } int main ( void) { showday ( "monday"); return 0; }
它会在找到匹配项后立即退出,这对于大型数组的性能非常有用:

.includes

演示:

.some(item => item.toLowerCase() == lookup.toLowerCase())


或者使用唯一名称定义您自己的Array原型方法:

var arr = ['foo','bar','bar'];
var lookup = "bAr";

// case-sensetive
console.log( arr.includes(lookup) )

// case-insensetive without caring about the type
console.log( arr.some(x => x.toLowerCase() == lookup.toLowerCase()) )