JavaScript 正则表达式帮助 : Match 0 or 1 times but do not capture

标签 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'

最佳答案

使用[^/]来匹配任何不是/的字符:

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

一般来说,如果你想为量词分组一个子表达式,但又不想捕获它,你可以在子表达式前加上?:前缀,像这样:(?:.*).

然而,使用上述正则表达式,您确实想要捕获 ([^\]*)

关于JavaScript 正则表达式帮助 : Match 0 or 1 times but do not capture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18448818/

相关文章:

javascript - bootstrap-modal - 向下滚动时如何阻止背景显示在顶部

javascript - 在提交表单之前检查文件是否已上传

javascript - 通过 ajax 具有唯一 ID 的多个复选框

javascript - 如何让 jQuery 从外部 TXT 文件读取 "Regular Expressions"

Java 正则表达式 与 XSD 正则表达式

javascript - 未终止的字符串文字

javascript - 如何动态改变DIV标签的CSS样式属性?

PHP:匹配行与正则表达式数组

JavaScript 正则表达式不匹配确切的字符串

javascript - string.replace() 与 global (g) 不以奇怪的方式工作