2011-01-13 8 views
1
var string = "M-84.1487,-15.8513 a22.4171,22.4171 0 1 0 0,31.7026 h168.2974 a22.4171,22.4171 0 1 0 0,-31.7026 Z"; 
var regex = "[a-zA-Z][0-9, /-/.]*"; 
var array = string.match(regex); 

Quelqu'un peut-il me aider avec mon expression régulière pour correspondre intructions individuels (array[0] == "M-84.1487,-15.8513"; array[1] == "a22.4171,22.4171 0 1 0 0,31.7026";)Regex pour correspondre les données du chemin SVG en javascript

de Merci beaucoup

Répondre

2

Selon le BNF description vous pouvez identifier une instruction comme une lettre suivie de tout ce qui n'est pas une lettre.

var pathData = "M-84.1487,-15.8513 a22.4171,22.4171 0 1 0 0,31.7026 h168.2974 a22.4171,22.4171 0 1 0 0,-31.7026 Z"; 
var pathSegmentPattern = /[a-z][^a-z]*/ig; 
var pathSegments = pathData.match(pathSegmentPattern); 

Bien sûr, vous voudrez peut-trim les résultats, mais cela ne devrait pas être trop difficile.

Essayez également de ne pas nommer vos variables de façon si dénuée de sens (string, regex, array). À mon avis, c'est pire que de les nommer a, b ou c.

+1

Merci, je vais essayer. Les variables sont juste nommées de cette façon pour le bien de cet article :) – Tom

+0

@Tom Pas de problème. Faites-moi savoir si vous trouvez quelque chose de mal avec cette méthode. C'est assez simple, mais d'après ce que j'ai pu voir dans la documentation, vous n'avez pas besoin de quelque chose de plus complexe. –

+0

Comment pourrais-je mettre un espace après les lettres? pathData = pathData.replace (/ [a-z]/ig,? + ""); Que dois-je mettre à la place du point d'interrogation? – Tom

Questions connexes