2010-08-09 98 views
9

我寫了一個正則表達式,我期望它能正常工作,但事實並非如此。如何將方括號內的數字與正則表達式匹配

var regex = new RegExp('(?<=\[)[0-9]+(?=\])') 

JavaScript是給我的錯誤Invalid regular expression :(/(?<=[)[0-9]+(?=])/): Invalid group

是否JavaScript的不支持前瞻或回顧後?

回答

17

這應該工作:

var regex = /\[[0-9]+\]/; 


編輯:與分組運算符,只是數量:

var regex = /\[([0-9]+)\]/; 

有了這個表情,你可以做這樣的事情:

var matches = someStringVar.match(regex); 
if (null != matches) { 
    var num = matches[1]; 
} 
+0

這包括括號,這是不是OP想要的數量相匹配。不過,這是一個體面的替代方案。 – strager 2010-08-09 22:35:25

+0

好點 - 更新。 – jmar777 2010-08-09 22:37:12

+0

感謝您的解決方法。有點kludgeish,但哦。 – Teddy 2010-08-10 02:27:22

2

Lookahead支持,但不是向後看。你可以get close,有點欺騙。

0

如果您引用RegExp,請注意雙反斜槓。

1

要在表格增加多個號碼中的讓說:

var str = '/a/b/[123]/c/[4567]/[2]/69'; 

嘗試:

str.replace(/\[(\d+)\]/g, function(m, p1){ 
return '['+(p1*1+1)+']' } 
) 

//Gives you => '/a/b/[124]/c/[4568]/[3]/69' 
相關問題