我需要一个字符串并从中获取一些值。我有这个字符串:

'tab/tab2/tab3'


'/ tab3'是可选的,因此此字符串也应该起作用:

'tab/tab2'


我目前正在尝试大多数情况下可以使用的方法:

'tab/tab2/tab3'.match(new RegExp('^tab/([%a-zA-Z0-9\-\_\s,]+)(/([%a-zA-Z0-9-_s,]+)?)$'));


这将返回:

["tab/tab2/tab3", "tab2", "/tab3", "tab3"]


但我要它回来

["tab/tab2/tab3", "tab2", "tab3"]


因此,我需要摆脱第三个索引项(“ / tab3”),并使它仅与'tab / tab2'字符串一起使用。

更复杂的是,我只能控制最后一个分组中的/([%a-zA-Z0-9-_s,]+)?部分,这意味着它将始终包裹在一个分组中。

最佳答案

您不需要正则表达式,只需使用split()方法:

var str = 'tab/tab2/tab3';
var arr = str.split('/');

console.log(arr[0]); //tab
console.log(arr[1]); //tab2


jsfiddle

09-25 16:22