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