2013-08-16 56 views
0

我需要从这个字符串中获得数字(1)和字符串(开始),所以我可以递增数字,下面的正则表达式工作,但仍然有[]在输出周围 - 任何人都有一个正则表达式来移除[]的呢?正则表达式来获取字符串和方括号之间的数字 - javascript

var $name = 'event[1][start]'; 
var parts = $name.match(/\[(.*?)\]/g); 
console.log(parts[0] + ' - ' + parts[1]); 
// I wish to do something like this eventually... 
// var $newName = 'event[' + ++parts[0] + '][' + parts[1] + ']'; 

非常感谢

回答

0

如果字符串总是在格式something[part0][part1],使用此:

var parts = $name.match(/.*?\[(.*?)\]\[(.*?)\]/); 
console.log(parts[1] + ' - ' + parts[2]); 

当您使用global标志,你就得到了比赛的数组整个正则表达式,而不是捕获组。但在你的情况下,你似乎不需要全局,你只是想捕获两个特定的元素,所以使用两个捕获组。

请注意,捕获组编号从1开始 - parts[0]是整个regep的匹配项。

0

就这样做。

var $name = 'event[1][start]'; 
var parts = $name.match(/\w+/g); 
console.log(parts[1] + ' - ' + parts[2]); 
0

你可以做到这一点,以提取捕获组:

var $name = 'event[1][start]'; 
var pattern=new RegExp("\\[(.*?)\\]","g"); 
var parts = pattern.exec($name); 
while (parts!=null) { 
    console.log(parts[1]); 
    parts = pattern.exec($name); 
} 
相关问题