2014-11-03 64 views
0

我有一个字符串JavaScript的正则表达式跳过方括号

var oldName = "questions[0].answers[3].answer"; 

我要递增的答案部分[4](当前值是什么+1)。 如果它是questions[0].answers[6].answer它应该成为问题[0] .answers [7] .answer。

我尝试了以下,但我没有得到任何结果。

var matches = oldName.match(/(\d+)answers(\d+)/) 
var number1 = Number(matches[1]); 
var number2 = Number(matches[2]); 

我需要在两个单独的变量中存储字符串中的数字。

+1

你为什么要这样做? – nhahtdh 2014-11-03 09:21:13

+1

,因为我使用jQuery克隆一个元素,克隆后我需要增加元素的名称或ID,并使元素在文档中唯一。 – Ajey 2014-11-03 09:22:25

回答

1

它是简单的做到这一点,只是提供一个替代功能String.replace

str.replace(/answers\[(\d+)\]/, function (_, $1) { 
    return "answers[" + (+$1 + 1) + "]"; 
}); 

(如果你想在参数替换功能的解释,你可以阅读MDN以上链接,或my answer here

但是否这是解决更大问题的好方法,我不知道。

+0

你为什么拒绝我的编辑? – nicael 2014-11-03 09:37:21

+0

'var oldname = oldname.replace ...'是错误的代码,我不认为有必要对代码进行更多的更改。 – nhahtdh 2014-11-03 09:38:52

+0

对不起,我没有拒绝你的编辑,我的弟弟在PC上。 – Ajey 2014-11-03 09:59:15