2011-01-16 4 views
2

je la chaîne suivante:Quel est le problème avec ce code JavaScript simple?

(1-$500.00)(2-$20.00) 

Je veux en faire un tableau avec des valeurs qui ressemble à ceci:

output[0] = 1-$500.00 
output[1] = 2-$20.00 

J'ai donc essayé ceci:

var output = '(1-$500.00)(2-$20.00)'; 
var pattern = "/\\)\\(|\\(|\\)?/"; 

output = output.split(pattern); 

alert(output); 

Mais juste alerte la chaîne d'origine, ne fait pas le travail. Est-ce qu'il y a quelque chose qui ne va pas avec mon regex ou la façon dont j'utilise la fonction split?

Répondre

3

Vous n'avez pas besoin de citer d'expressions rationnelles.

var pattern = /\)\(|\(|\)/; 

Pour que le contenu suit le format attendu (vérification) et éviter d'attaque et de mettre fin à des entrées vides, j'utiliser RegExp.exec au lieu de String.split.

function my_split(input) { 
    var pattern = /\((\d+-\$\d+\.\d+)\)/g; 
    var output = []; 
    while((m = pattern.exec(input))) 
    output.push(m[1]); 
    return output; 
} 
+0

Ne fonctionne pas pour moi - divise l'entrée en caractères simples (testés à l'aide http://writecodeonline.com/javascript/) – schnaader

+0

semble fonctionner (http://jsfiddle.net/XE6pQ/), mais le résultat inclut également une chaîne vide à la fois au premier et au dernier index. – polarblau

+0

@polar: Cela ne peut pas être évité si vous utilisez '.split'. Voir mise à jour pour le moyen d'éviter ces 2 choses vides en utilisant '.exec'. – kennytm