如何比较 javascript 中的字符串忽略特殊字符

How to compare strings in javascript ignoring special characters

我正在开发一个应用,有人要求我比较字符串,但字符串中的文本有特殊字符(西班牙语重音符号,如“á”、“é”、“í”、“ó”和“ú” ")

我已经使用 toUpperCase() 管理大小写,但是,我仍然想确保我没有遇到重音问题。

我要做的是比较一些已经保存在系统中的单词,并检查是否使用了其中的任何一个。

我做的是将输入的单词存储在一个数组中,然后在另一个函数(尚未实现)中继续分析它们

这是我的函数,我在其中存储用户键入的单词(它可能会更改以使其更完整):

function clickNewWord(){
    var theWord = textField.value.toUpperCase();
    ArrayWrittenWords.push(theWord);
    textField.value = "";
}

PD:我会借此机会问:处理重音符号的正确编码是什么? UTF-8?

你可以转换它们然后匹配它们,如果我的例子很清楚的话让我来:)

var stringInTheSystem = ['aaaa','bbbb'];// Array of string in your system;

var term = 'áaaa';// the word you want to compare it; 
term = term.replace(/á/g, "a"); 
term = term.replace(/é/g, "e"); 
term = term.replace(/í/g, "i"); 
term = term.replace(/ó/g, "o"); 
term = term.replace(/ú/g, "u"); 
var matcher = new RegExp( term, "i" );
$.grep( stringInTheSystem, function( value ) {
                  value = value.test || value.value || value;
                    console.log(matcher.test( value ));
});

尽管这是一个老问题,但为了未来的 google 员工,这里是 best 从字符串中删除重音的方法:

var string = 'á é í ó ú';
string.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
>a e i o u