我如何在这个javascript regexp中使用像ČčĆ抚Đđ这样的拉丁字符?
var regex = new RegExp('\\b' + this.value, "i");
更新:
我有这个代码用于过滤复选框标签,但是当有Ččć
的输入时它不能正常工作function listFilter(list, input) {
var $lbs = list.find('.css-label');
function filter(){
var regex = new RegExp('\\b' + this.value);
var $els = $lbs.filter(function(){
return regex.test($(this).text());
});
$lbs.not($els).hide().prev().hide();
$els.show().prev().show();
};
input.keyup(filter).change(filter)
}
jQuery(function($){
listFilter($('#list'), $('.search-filter'))
})
这是一个小提琴:DEMO
答案 0 :(得分:4)
正则表达式中的问题是没有使用这些字符正确检测到单词边界(就像\w
和\W
在Unicode方面处理不当)。
我建议先从
开始new RegExp('(^|[\\s\\.])ČčĆ抚Đđ', "i")
并添加到[\\s\\.]
您可能需要的其他字符作为字边界。
如果您无法定义预期的可能字边界,那么您最好使用库来生成" Unicode兼容"常用表达。其中一些列在this related question。
中答案 1 :(得分:2)
尝试:
/^[A-z\u00C0-\u00ff\s'\.,-\/#!$%\^&\*;:{}=\-_`~()]+$/
作为正则表达式。
请参阅以下示例:
var regexp = /[A-z\u00C0-\u00ff]+/g,
ascii = ' hello !@#$%^&*())_+=',
latin = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏàáâãäåæçèéêëìíîïÐÑÒÓÔÕÖØÙÚÛÜÝÞßðñòóôõöøùúûüýþÿ',
chinese = ' 你 好 ';
console.log(regexp.test(ascii)); // true
console.log(regexp.test(latin)); // true
console.log(regexp.test(chinese)); // false
Glist:https://gist.github.com/germanattanasio/84cd25395688b7935182