用正则表达式模式替换标志“ i”

时间:2018-10-25 10:58:25

标签: javascript jquery json regex

我有一个用于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包含诸如Ά,έ,Ί(希腊字母)等字符。

例如:

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

因此,如果我搜索“Παραδέιγ” val.name.search(regex)将返回-1 /的原因,但我想找到一个匹配项。

1 个答案:

答案 0 :(得分:0)

通常,JS Regexp引擎对Unicode不太友好,因此,重音符号被解析为不同的字符,并且似乎没有标记来忽略这些字符。最好的解决方案是使用外部库,例如XRegexp,这是我最常看到的建议。

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