Maison  >  Article  >  interface Web  >  Comment faire correspondre les caractères non ASCII avec les limites des mots dans JavaScript Regex ?

Comment faire correspondre les caractères non ASCII avec les limites des mots dans JavaScript Regex ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-27 04:46:29552parcourir

How to Match Non-ASCII Characters with Word Boundaries in JavaScript Regex?

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 :

  • (?:...) : groupe non capturant
  • ^ : début de la chaîne
  • s : espaces
  • | : opérateur "ou"

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn