Utiliser JavaScript pour effectuer des correspondances de texte avec / sans caractères accentués

Je suis en utilisant une base d'AJAX de recherche pour les noms qu'un utilisateur effectue une recherche dans une zone de texte.

Je fais l'hypothèse que tous les noms dans la base de données sera transcrit pour les alphabets Européens (c'est à dire pas le Cyrillique, Japonais, Chinois). Toutefois, les noms seront toujours contenir de caractères accentués, tels que ç, ê et même č et æ.

Une simple recherche comme "Micic" correspondent à "Mičić" si - et l'utilisateur s'attend à ce que il va.

L'AJAX de recherche utilise des expressions régulières pour déterminer une correspondance. J'ai modifié l'expression régulière de la comparaison à l'aide de cette fonction dans une tentative de faire correspondre plus les caractères accentués. Cependant, il est un peu maladroit car il ne prend pas en compte tous les caractères.

function makeComp (input)
{
    input = input.toLowerCase ();
    var output = '';
    for (var i = 0; i < input.length; i ++)
    {
        if (input.charAt (i) == 'a')
            output = output + '[aàáâãäåæ]'
        else if (input.charAt (i) == 'c')
            output = output + '[cç]';
        else if (input.charAt (i) == 'e')
            output = output + '[eèéêëæ]';
        else if (input.charAt (i) == 'i')
            output = output + '[iìíîï]';
        else if (input.charAt (i) == 'n')
            output = output + '[nñ]';
        else if (input.charAt (i) == 'o')
            output = output + '[oòóôõöø]';
        else if (input.charAt (i) == 's')
            output = output + '[sß]';
        else if (input.charAt (i) == 'u')
            output = output + '[uùúûü]';
        else if (input.charAt (i) == 'y')
            output = output + '[yÿ]'
        else
            output = output + input.charAt (i);
    }
    return output;
}

En dehors de la fonction de substitution comme cela, est-il un meilleur moyen? Peut-être à "deaccent" la chaîne par rapport?

source d'informationauteur Philip