我需要从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'
答案 0 :(得分:2)
使用[^/]
匹配任何非/
的字符:
var hash = /^#([^/]+)/.exec(url2)[1];
通常,如果要为量词组分组子表达式,但又不想捕获它,则可以在子表达式前加?:
,如下所示:(?:.*)
。
但是,使用上述正则表达式,您确实希望捕获([^\]*)
。
答案 1 :(得分:2)
您可以使用
var hash = yourString.match(/#([^/]+)/)[1];