Maison >interface Web >js tutoriel >Pourquoi mes expressions régulières JavaScript ne parviennent-elles pas à extraire les coordonnées ?

Pourquoi mes expressions régulières JavaScript ne parviennent-elles pas à extraire les coordonnées ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-04 19:01:18979parcourir

Why Are My JavaScript Regexes Failing to Extract Coordinates?

Analyse des échecs des expressions régulières JavaScript

Lorsque vous rencontrez des résultats nuls provenant d'expressions régulières JavaScript, il est important d'approfondir les subtilités derrière l'expression. Examinons pourquoi une expression régulière spécifique pour extraire les coordonnées d'une chaîne séparée par des virgules n'a donné aucune correspondance :

Défauts de construction de l'expression régulière :

L'expression régulière en question a été définie comme :

new RegExp("/\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g")

Au lieu de cela, un littéral regex aurait dû être utilisé :

var reg = /\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g;
  1. Les délimiteurs ne font pas partie de l'expression et ne doivent pas être inclus.
  2. Les littéraux Regex sont plus pratiques et permettent d'éviter d'éventuels problèmes de barre oblique inverse.

Analyse de sortie Regex :

Pour mieux comprendre l'expression régulière, un peut afficher son modèle à l'aide de la console :

/(s*([0-9.-]+)s*,s([0-9.-]+)s*)/g

Cela révèle que l'expression correspondra littéralement aux littéraux 's', 'g' et parenthèses, ce qui n'est pas le comportement prévu.

Considérations sur la sortie du tableau :

Il est crucial de noter que match() renvoie un tableau de matches :

["(25.774252, -80.190262)", "(18.466465, -66.118292)", ... ]

Pour extraire les nombres individuels, exec() doit être utilisé à la place :

["(25.774252, -80.190262)", "25.774252", "-80.190262"]

L'opérateur unaire plus ( ) peut ensuite être utilisé pour convertir des chaînes en nombres.

Code complet :

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

while((result = reg.exec(polygons)) !== null) {
    points.push([+result[1], +result[2]]);
}

Ce code créera un tableau de tableaux contenant les coordonnées extraites sous forme de nombres.

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