JavaScript匹配字符串数组的重音符号

时间:2018-05-24 11:13:55

标签: javascript jquery regex

我正在尝试使用RegEx从输入返回给定字符串数组中的所有匹配项的函数。代码如下:

function checkWord(input, myArray) {
    let reg = new RegExp(input.split('').join('\\w*\\s*\\w*').replace(/\W/, ""), 'i');

    return myArray.filter(function (f) {
        if (f.match(reg)) {
            return f;
        } 
   }); 
}


$input.on("keyup", function () {
    let result = checkWord($input.val(), arr);
    $divResult.html(result); 
});

我在输入的“keyup”事件中实现了这个,它返回所有匹配但不能用重音词,我如何检查和匹配字符串数组中的重音词? 我的意思是,如果数组包含重音词,它将不匹配输入中的非重音词。

我正在用这个数组测试它:

let arr = [ "Álvaro", "Lucía", "Ramón", "á", "é", "í", "ó", "ú", "Alvaro", "Lucia", "David", "Joaquín", "Pepe", "Paco", "Barça", "äe", "ë", "ï", "ö", "ü", "à", "è", "ì", "ò", "ù" ];

我已经尝试了所有RegEx建议的评论,但我不能让它工作:(

感谢。

1 个答案:

答案 0 :(得分:0)

将RegExp替换为:

let reg = new RegExp(input.split('').join('[A-Za-zÀ-ÿ]*\\s*[A-Za-zÀ-ÿ]*').replace(/[^A-Za-zÀ-ÿ]/, ""), 'i');

虽然\w允许所有字母字符(意为[a-zA-Z]),但[A-Za-zÀ-ÿ]也允许重音字符。 \W表示所有BUT字母字符([^a-zA-Z])和[^A-Za-zÀ-ÿ]也不允许使用重音字符。