3

我如何在这个 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

4

2 回答 2

4

\w您的正则表达式中的问题是这些字符没有正确检测到单词边界(就像\WUnicode 处理不当一样)。

我建议从

new RegExp('(^|[\\s\\.])ČčĆ抚Đđ', "i")

并添加到[\\s\\.]您可能需要的其他字符作为单词边界。

如果您无法定义预期的可能单词边界,则最好使用库来生成“Unicode 兼容”正则表达式。在这个相关问题中列出了一些。

于 2013-07-30T14:33:16.970 回答
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

清单: https ://gist.github.com/germanattanasio/84cd25395688b7935182

于 2015-05-16T00:53:38.577 回答