2013-03-16 64 views
0

爲什麼不能正常工作?JavaScript,RegEx - 如何獲取實際找到的字符串

var str = "nd2(31)jnd"; 
str = str.replace(/[0-9](/,/[0-9]*(/); 

我想在前面的前一個paranthese更換每一個號碼: 「2(」 與 「2 *(」

+0

什麼不起作用? – Piyuesh 2013-03-16 09:35:00

+0

現在我編輯它 – 2013-03-16 09:36:02

+0

,它不工作,以取代前:「2(」與「2 *(」 – 2013-03-16 09:36:34

回答

2

你的正則表達式是錯誤的,這樣做你想要什麼:

str.replace(/([0-9]+)\(/g, "$1*("); 

$1引用在括號()的第一場比賽,你必須逃脫\(與之相匹配的。

更新:添加g全球匹配

2(3(4+5)) => 2*(3*(4+5))

更新:製作它的括號的另一端工作太,合:

str.replace(/(\d+)\(/g, "$1*(").replace(/\)(\d+)/g, ")*$1"); 
+0

也許更有效的是:str.replace(/([\ d])\(/,「 $ 1 *(「); – Piyuesh 2013-03-16 09:46:53

+0

@Piyuesh你不會逃避'('在模式中,你不需要圍繞'\ d'的方括號,它大部分與'[0-9]' – aorcsik 2013-03-16 09:51:56

+0

是錯誤相同,謝謝..... – Piyuesh 2013-03-16 09:52:37

相關問題