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 :
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!