2010-07-28 14 views
6

Potrzebuję uzyskać tekst (jeśli jest) między nawiasami klamrowymi. Znalazłem ten drugi post, ale technicznie nie odpowiedział poprawnie: Regular expression to extract text between either square or curly bracketsJavaScript regex - jak uzyskać tekst między nawiasami klamrowymi

To tak naprawdę nie powiedział, jak faktycznie wyodrębnić tekst. Tak więc dotarłem tak daleko:

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"); 
} 

Jak mogę wydobyć "stuff" z napisu? A także, jeśli wziąć to dalej, w jaki sposób wyodrębnić „rzeczy” i „zdanie” z tego napisu:

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

Cheers!

Odpowiedz

18

Aby wyodrębnić wszystkie wystąpienia między klamrami, można zrobić coś takiego:

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

Wielkie dzięki CMS. Właśnie tego szukałem! – WastedSpace

+0

@WastedSpace: Nie ma za co! Zwróć uwagę, że dodałem deklarację zmiennej "text", której brakowało. – CMS

+0

Witam CMS, przepraszam za ból (myślałem, że mógłbym to sobie wymyślić), ale jak to zrobić, pisząc WSZYSTKO z tego zdania do wartości tablic jak w poniższym porządku (w tej kolejności): Some random, {stuff} w tym {sentence}. Dzięki :) – WastedSpace

0

Utwórz grupę „przechwytywania”, aby wskazać żądany tekst. Użyj funkcji String.replace(), aby zastąpić cały łańcuch tylko zwrotnym odnośnikiem do grupy przechwytywania. Zostajesz z tekstem, który chcesz.

Powiązane problemy