Correspondance des caractères non-ASCII dans l'expression régulière JavaScript avec les limites des mots
En JavaScript, l'objet RegExp avec la correspondance de la limite du mot (b) peut rencontrer limitations lors de la gestion des caractères non-ASCII comme les voyelles finlandaises (ä, ö et å). Pour faire correspondre avec précision ces caractères, nous devons ajuster notre approche.
Considérez le code suivant :
<code class="javascript">var title = "this is simple string with finnish word tämä on ääkköstesti älkää ihmetelkö"; var searchterm = "äl"; if (new RegExp("\b" + searchterm, "gi").test(title)) { // This does not work for "äl" }</code>
Ce code tente de faire correspondre le terme « äl » dans le titre en utilisant la limite b. . Cependant, cela échoue car b correspond aux limites de mots basées sur la plage standard de 256 octets, à l'exclusion des caractères non-ASCII.
Solution : groupe sans capture avec limite de mots
Pour résoudre ce problème, nous pouvons remplacer b par un groupe non capturant qui correspond explicitement au début de la chaîne ou aux espaces :
<code class="javascript">if (new RegExp("(?:^|\s)" + searchterm, "gi").test(title)) { // Now it works for "äl" }</code>
Répartition :
Ce code modifié correspondra au terme « äl » dans le titre car il définit une condition limite de début de mot plus flexible qui inclut des caractères non-ASCII.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!