用正则表达式模式替换标志“i”[重复]

问题描述 投票:2回答:1

这个问题在这里已有答案:

我有一个JSON对象的实时搜索输入

<input type="input" id="searchtxt" placeholder="Search">

这是我的JS代码

$('#searchtxt').keyup(function(){
 var Field = $(this).val(); 
 var regex = new RegExp(Field,"i");
   $.each(data, function(key, val){
     if (val.name.search(regex) != -1) {
        //Do something
     }
   });
 });

i作为标志我只能使我的正则表达式区分大小写,但我怎么能使它与重音字符匹配,因为我的JSON包含characters,έ,Ί(希腊字母)等字符。

例如:

var data = [
{"id":"1",
"name":"Παράδειγμα",
},
{"id":"2",
"name":"Ίδιο Κείμενο",
}];

因此,如果我搜索“Παραδέιγ”,val.name.search(regex)将返回-1因ά/έ但我想要匹配。

javascript jquery json regex
1个回答
0
投票

一般来说,JS Regexp引擎不是非常友好的,因此重音标记被解析为不同的字符,似乎没有一个标志可以忽略它们。最好的解决方案是使用外部库,例如XRegexp,这是我最常见的建议。

另一个选择是remove diacritics using a function like this one,然后像往常一样使用正则表达式。

© www.soinside.com 2019 - 2024. All rights reserved.