Maison >interface Web >js tutoriel >Pourquoi mon expression régulière JavaScript ne correspond-elle pas correctement aux coordonnées ?

Pourquoi mon expression régulière JavaScript ne correspond-elle pas correctement aux coordonnées ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-13 02:14:12516parcourir

Why Isn't My JavaScript Regex Matching Coordinates Correctly?

Pourquoi cette expression régulière JavaScript ne fonctionne pas

Dans le code JavaScript fourni, l'expression régulière var reg = new RegExp("/(s *([0-9.-] )s*,s([0-9.-] )s*)/g"); ne parvient pas à correspondre à la chaîne d'entrée var polygons="(25.774252, -80.190262),(18.466465, -66.118292),(32.321384, -64.75737),(25.774252, -80.190262)";, ce qui entraîne une valeur nulle résultat.

Utilisation incorrecte de Regex

L'erreur provient de deux utilisations incorrectes du constructeur RegExp :

  1. Délimiteurs : Les barres obliques (/) ne doivent pas être incluses dans la chaîne d'expression régulière. Utilisez plutôt la syntaxe /(s*([0-9.-] )s*,s([0-9.-] )s*)/g pour définir l'expression avec '/' comme délimiteurs.
  2. Échappement des barres obliques inverses : Si vous utilisez une chaîne d'expression régulière, le caractère barre oblique inverse doit être échappé avec un autre caractère pour garantir sa représentation littérale, car il est réservé à l'échappement. séquences dans des chaînes JavaScript.

Regex Literal

Pour éviter ces pièges, il est recommandé d'utiliser un littéral regex, qui est entouré de barres obliques et échappé selon la syntaxe de l'expression régulière :

var reg = /\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g;

Sortie Extraction

La syntaxe polygons.match(reg) utilisée dans le code renvoie un tableau de sous-chaînes correspondantes. Cependant, comme la chaîne d'entrée ne contient qu'une seule sous-chaîne qui correspond au modèle, le résultat est un tableau à un seul élément :

["(25.774252, -80.190262),(18.466465, -66.118292),(32.321384, -64.75737),(25.774252, -80.190262)"]

Pour extraire les paires lat/lon individuelles sous forme de tableaux, la méthode match() doit être remplacé par exec() :

[total match result, lat1, lon1, lat2, lon2, ..., latn, lonn] = reg.exec(polygons);

Cela donnera lieu à un tableau contenant la correspondance globale et tous les groupes capturés, permettant un accès facile aux paires latitude/longitude.

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