我需要取一个字符串并从中获取一些值。我有这个字符串:
'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,]+)?
部分,这意味着它将始终包含在分组中。
答案 0 :(得分:1)
你不需要正则表达式,只需使用split()
方法:
var str = 'tab/tab2/tab3';
var arr = str.split('/');
console.log(arr[0]); //tab
console.log(arr[1]); //tab2
答案 1 :(得分:1)
我用这个正则表达式来做到这一点:
'tab/tab2/tab3'.match(new RegExp('^tab/([%a-zA-Z0-9\-\_\s,]+)(?:/)([%a-zA-Z0-9-_s,]+)$'));
现在我得到了这个回报
["tab/tab2/tab3", "tab2", "tab3"]
现在我只需要接受'tab / tab2'以及...
答案 2 :(得分:0)
不要将正则表达式放在“或”之间,使用/ g进行全局搜索,否则只返回第一次出现
"tab/tab2/tab3".match(/tab[0-9]/g)