2014-02-15 162 views
-1

我需要在Javascript中使用正則表達式在下面的字符串中僅獲得「Callout」值。正則表達式:如何在大括號中得到大括號中的值

str = "aaa {Callout [apple]} bbbb"; 
+1

這需要更多的闡述。你有什麼嘗試?你在哪裏失敗?當你有'aaa {Callout [apple] Callin} bbbb'時應該匹配什麼?那麼'aaa {{ccc,Callout} ddd [apple] Callin} bbbb'怎麼樣?我正在投票結束這個問題 – HamZa

+0

不要擔心其他情況。我只爲此尋找 –

回答

1

保持它在我看來很簡單。如果你想通過result[0]串訪問它的第一場比賽..

var string = "asdfadsfsad {Callout1 [callout1]} dasdfsadf {Callout2 [callout2]} ccc]"; 
var result = string.match(/[^{]+(?=\[)/g); 
console.log(result[0]); // => "Callout1 " 

對於所有比賽剛剛訪問result直接。

console.log(result); // => [ 'Callout1 ', 'Callout2 ' ] 

正則表達式:

[^{]+   any character except: '{' (1 or more times) 
(?=   look ahead to see if there is: 
    \[   '[' 
)    end of look-ahead 
+0

這段代碼我想要的是什麼......你讓我的週末快樂...... :-) –

1

您可以使用前瞻和組匹配:

\{(\w+)(?=\b) 

Regular expression visualization

See Demo

JS代碼:

var re = new RegExp(/\{(\w+)(?=\b)/); 
var m = re.exec("aaa {Callout [apple]} bbbb"); 
alert(m[1]); 
+0

從開頭顯示帶大括號的輸出。但我不想在輸出中使用最初的大括號。 –

+0

@RanjitSachin它不會在輸出,如果你只會打電話匹配的組:看上面的JS代碼示例 – alfasin

+0

哎呀..我想下面: var str =「asdfadsfsad {Callout [callout1]} dasdfsadf {標註[callout2]} ccc]「; var patt =/\ {(\ w +)(?= \ b)/ g; var result = str.match(patt); alert(result); –

0

Tr的Y本

{(.*?)\[ 

Regex Demo

var myString = "asdfadsfsad {Callout [callout1]} dasdfsadf {Callout [callout2]} ccc]"; 
var myRegexp = /{(.*?)\[/g; 
var match = myRegexp.exec(myString); 
alert(match[1]); 

Working JS Fiddle

相關問題