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

JavaScript Regular Expression Help: Match 0 or 1 times but do not capture

本文关键字:1次 帮助 正则表达式 匹配 JavaScript      更新时间:2023-09-26

我只需要返回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];

通常,如果您想为一个量词对一个子表达式进行分组,但又不想捕获它,则可以在该子表达式前面加上?:,比如:(?:.*)

但是,使用上面的regex,您确实希望捕获([^']*)

您可以使用

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