如果有零个或多个"选项"我试图创建一个匹配字符串的RegExp。例如,我希望匹配这三个字符串:
'user'
'user/1'
'user/1/admin'
我目前有这个:
/^user(?:(?:\/){1}([%a-zA-Z0-9\-\_\s,]+))*$/g
这将匹配它们,但它只会返回最后一个匹配的选项。所以在第二个字符串上,它会记住'1'
。在3日,它会记住'admin'
。在第3天,我想要记住['1', 'admin']
。
这需要是动态的,以允许1个或无限制的选项。
这样我可以定义类似user:args
的内容,然后我可以返回args。
答案 0 :(得分:0)
正则表达式只能记住最后一次迭代。但是,您可以编写一些复杂的代码或使用
进行匹配^user((\/[\w %,-]+)+)?$
然后将匹配$1
拆分为/
答案 1 :(得分:0)
以下是使用符合您要求的string.split()
解决方案。
var strings = [
'user',
'user/1',
'user/1/admin',
'blah/ignore/this/user',
'blah/ignore/this/too/user/1/admin',
'blah/this/should/also/be/ignored/user/1'
];
function getArgs(str,base) {
// If the string doesn't contain the requested base, ignore.
if (str.indexOf(base) === -1) return undefined;
var options = str.split(base)[1];
return options.substring(1).split('/');
}
strings.forEach(function(str) {
console.log(str,getArgs(str,'user'));
});