JavaScript正则表达式帮助:匹配0或1次但不捕获

时间:2013-08-26 16:36:30

标签: javascript regex

我需要从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'

2 个答案:

答案 0 :(得分:2)

使用[^/]匹配任何非/的字符:

var hash = /^#([^/]+)/.exec(url2)[1];

通常,如果要为量词组分组子表达式,但又不想捕获它,则可以在子表达式前加?:,如下所示:(?:.*)

但是,使用上述正则表达式,您确实希望捕获([^\]*)

答案 1 :(得分:2)

您可以使用

var hash = yourString.match(/#([^/]+)/)[1];