想到一個字符串是這樣的:JavaScript正則表達式得到大括號之間的內容(裏面大括號)
public function test(data)
{
if (1 == 2)
{
alert("Wtf?");
}
switch (data)
{
case 'test':
alert("Test");
break;
}
}
我需要解析該字符串,讓我有一個函數體(內容) 。
我已經得到了我的reg exp工作,所以我有函數的內容,但是當有一個結束}。正則表達式停止和內容看起來就像這樣:
if (1 == 2)
{
alert("Wtf?");
我真的希望有人能幫助我..
這是我的註冊精通用於分割字符串:
var test = classContent.replace(/(?:(private|public)\s*)function\s*([a-zA-Z0-9_]+)\s*\(([a-zA-Z0-9_\,\s]*)\s*\)\s*{([^}]+)\}/gi, function(a, b, c, d, e) {
classMethods[c] = {
visibility : b.trim(),
params : d.trim(),
content : e.trim()
};
});
嚴格地說,你不能用正則表達式來解析那樣的語法。如果您對要匹配的文本施加一定的約束,您可以這樣做,但如果您確實想匹配任意JavaScript構造,則需要一個完整的JavaScript解析器。 – Pointy
有關@Pointy所說的內容的其他信息http://en.wikipedia.org/wiki/Chomsky_hierarchy – Prinzhorn
如果最後一次關閉'}'始終與打開的'{'''相同的縮進級別,那麼您只有一個正則表達式的機會, ,並且如果在同一級別上沒有中間支撐。你能保證嗎? –