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
Libérer: 2024-12-04 19:01:18
original
950 Les gens l'ont consulté

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")
Copier après la connexion

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

var reg = /\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g;
Copier après la connexion
  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
Copier après la connexion

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)", ... ]
Copier après la connexion

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

["(25.774252, -80.190262)", "25.774252", "-80.190262"]
Copier après la connexion

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]]);
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal