我只需要返回 URL 中 # 和第一个“/”之间的部分。有时 URL 可能没有前缀“/”。我正在努力处理 RegEx 中的这种情况:
var url1 = '#some';
var url2 = '#some/parameter';
var hash = /#(.*)\//.exec(url1);
alert(hash[1]); // only want 'some'
var hash = /#(.*)\//.exec(url2);
alert(hash[1]); / only want 'some'
最佳答案
使用[^/]
来匹配任何不是/
的字符:
var hash = /^#([^/]+)/.exec(url2)[1];
一般来说,如果你想为量词分组一个子表达式,但又不想捕获它,你可以在子表达式前加上?:
前缀,像这样:(?:.*)
.
然而,使用上述正则表达式,您确实想要捕获 ([^\]*)
。
关于JavaScript 正则表达式帮助 : Match 0 or 1 times but do not capture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18448818/