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