我正在尝试使用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建议的评论,但我不能让它工作:(
感谢。
答案 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À-ÿ]
也不允许使用重音字符。