有没有办法在不使用Pattern或Matcher的情况下指定我想要存储的组? 以下代码与“hello”匹配,我想匹配第二组中的“hi”。
var matches = [];
var test = "#hello# #hello#hi# #hello# #hi#";
test.replace(/#(hello)#(hi)#/gi, function (string, match) {
matches.push(match);
});
alert(matches);
非常确定我需要$ 2或.group(1)。
编辑:功能(匹配,$ 1,$ 2)做到了。
答案 0 :(得分:2)
您需要使用对第二个捕获组的引用将第二个捕获的组(hi
)存储在matches
数组中:
var matches = [];
var test = "#hello# #hello#hi# #hello# #hi#";
test.replace(/#(hello)#(hi)#/gi, function(match, $1, $2){
matches.push($2); // match = "#(hello)#(hi)#", $1 = hello, $2 = hi
});
alert(matches); // ["hi"]
答案 1 :(得分:0)
删除g
开关并使用String#match
:
"#hello# #hello#hi# #hello# #hi#".match(/#(hello)#(hi)#/i);
//=> ["#hello#hi#", "hello", "hi"]