Maison >interface Web >js tutoriel >Pourquoi mon expression régulière JavaScript ne parvient-elle pas à extraire les coordonnées d'une chaîne ?

Pourquoi mon expression régulière JavaScript ne parvient-elle pas à extraire les coordonnées d'une chaîne ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-21 17:46:16247parcourir

Why Is My JavaScript Regex Failing to Extract Coordinates from a String?

Pourquoi cette expression régulière JavaScript ne fonctionne-t-elle pas ?

En essayant d'extraire des points d'une chaîne avec une expression régulière, un utilisateur a rencontré une valeur nulle résultat. L'expression régulière fournie, "(s([0-9.-] )s,s([0-9.-] )s*)", correspond aux points entre parenthèses et séparés par des virgules. Cependant, lorsqu'il est appliqué à une chaîne telle que "(25.774252, -80.190262), (18.466465, -66.118292), (32.321384, -64.75737), (25.774252, -80.190262)", il échoue.

Résolution

La cause première est l'utilisation incorrecte du constructeur RegExp. Pour utiliser un littéral regex, plus pratique et moins sujet aux erreurs, remplacez « new RegExp » par « / ». De plus, les modificateurs sont passés comme deuxième argument :

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

Note sur la sortie

match() renvoie un tableau de chaînes correspondantes, ce qui peut ne pas être utile pour extraire des valeurs numériques. Au lieu de cela, exec() doit être utilisé pour extraire des correspondances individuelles :

var result, points = [];

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

Cela créera un tableau contenant des coordonnées sous forme de nombres. Alternativement, si les chaînes sont préférées, omettez le plus unaire ( ).

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