2010-07-28 4 views
6

Je dois obtenir le texte (le cas échéant) entre accolades. J'ai trouvé cet autre message mais techniquement il n'a pas été répondu correctement: Regular expression to extract text between either square or curly bracketsJavascript regex - comment obtenir le texte entre accolades

Il n'a pas réellement dit comment extraire réellement le texte. Donc, je suis arrivé à ce point:

var cleanStr = "Some random {stuff} here"; 
var checkSep = "\{.*?\}"; 
if (cleanStr.search(checkSep)==-1) { //if match failed 
    alert("nothing found between brackets"); 
} else { 
    alert("something found between brackets"); 
} 

Comment puis-je extraire «stuff» de la chaîne? Et si je prends plus loin, comment puis-je extorquer des « trucs » et « phrase » de cette chaîne:

var cleanStr2 = "Some random {stuff} in this {sentence}"; 

Cheers!

Répondre

18

Pour extraire toutes les occurrences entre accolades, vous pouvez faire quelque chose comme ceci:

function getWordsBetweenCurlies(str) { 
    var results = [], re = /{([^}]+)}/g, text; 

    while(text = re.exec(str)) { 
    results.push(text[1]); 
    } 
    return results; 
} 

getWordsBetweenCurlies("Some random {stuff} in this {sentence}"); 
// returns ["stuff", "sentence"] 
+0

Merci beaucoup CMS. Ceci est exactement ce que je cherchais! – WastedSpace

+0

@WastedSpace: De rien! Notez que j'ai ajouté la déclaration de variable de 'text' qui manquait. – CMS

+0

Salut CMS, Désolé d'être une douleur (je pensais que je pourrais comprendre cela par moi-même), mais comment allez-vous alors analyser tout de cette phrase en valeurs de tableau comme ça (dans cet ordre): Some random, {stuff} , dans ceci, {phrase}. Merci :) – WastedSpace

0

Créer un « groupe capture » pour indiquer le texte que vous voulez. Utilisez la fonction String.replace() pour remplacer la chaîne entière par la référence arrière du groupe de capture. Vous êtes à gauche avec le texte que vous voulez.

Questions connexes