Javascript RegExp + les limites de Mot + caractères unicode

Je suis à la recherche du bâtiment, et je vais utiliser le javascript de saisie semi-automatique avec elle. Je suis originaire de Finlande (finnois) donc je dois gérer avec certains caractères spéciaux comme ä, ö et å

Lorsque l'utilisateur tape du texte dans le champ de saisie de recherche j'ai essayer de faire correspondre le texte de données.

Ici est simple exemple qui ne fonctionne pas correctement si l'utilisateur tape par exemple """ingénierie". Même chose avec "äl"

var title = "this is simple string with finnish word tämä on ääkköstesti älkää ihmetelkö";
//Does not work
var searchterm = "äl";

//does not work
//var searchterm = "ää";

//Works
//var searchterm = "wi";

if ( new RegExp("\\b"+searchterm, "gi").test(title) ) {
    $("#result").html("Match: ("+searchterm+"): "+title);
} else {
    $("#result").html("nothing found with term: "+searchterm);   
}

http://jsfiddle.net/7TsxB/

Alors, comment puis-je obtenir ces ä,ö et å caractères de travailler avec javascript regex?

Je pense que je dois utiliser les codes unicode, mais comment dois-je faire? Codes pour ces caractères sont les suivants:
[\u00C4,\u00E4,\u00C5,\u00E5,\u00D6,\u00F6]

=> äÄåÅöÖ

  • C'est quoi "\\b" ?
  • \b signifie "mot" dans une expression régulière; la barre oblique est échappé ici parce que c'est dans une chaîne de caractères.
  • Merci, bizarre que je n'avais pas vu qu'avant :/
  • J'utilise le \b parce que je veux correspondre au début de chaque mot.
  • Comme vous le voyez, le Javascript est coincé dans l'idiot des années 1960 de style ASCII uniquement mentalité. Il ne répond pas, même les plus élémentaires exigences de conformité nécessaires pour le Niveau 1 de Base de Support de l'Unicode” par UT#18 sur Unicode Expressions Régulières. En essayant de faire du vrai texte Unicode-travaux de traitement en Javascript une affreuse blague, et une cruelle, trop: il ne peut pas être fait. Le XRegexp plugin mentionné ci-dessous est nécessaire, mais pas suffisante, pour ces fins.
  • Les nouveaux arrivants attention: Cela ne peut être fait dans la regexp. Pas avec \b, pas avec \s, pas avec XRegExp, pas avec lookaheads ou lookarounds. Croyez-moi, j'ai tout essayé, et tout cassé dans l'une ou l'autre manière. Le seul moyen que j'ai trouvé que jusqu'à maintenant les œuvres est l'encodage de la chaîne unicode retour à l'ascii et effectuer un ascii regexp rechercher/remplacer avec \b comme prévu à l'origine. Voir ici: stackoverflow.com/a/10590188/1329367

InformationsquelleAutor user1394520 | 2012-05-14