Regex将giturl与可选文件名进行匹配

问题描述 投票:0回答:1

我需要从github gist url中获得两部分(用户名/ gistid和文件名)。

到目前为止,我明白了:

  const gisturl = "https://gist.github.com/vanaf1979/329abed564c2ba10eda29a53b399ac69#file-parse-wp-rest-api-1-parse-js";
  const myRegexp = /\.com\/+(.*)?#file-(.*)/gi;
  const matches = myRegexp.exec(gisturl);
  console.log(matches);

whithc给了我

0: ".com/vanaf1979/329abed564c2ba10eda29a53b399ac69#file-parse-wp-rest-api-1-parse-js"
1: "vanaf1979/329abed564c2ba10eda29a53b399ac69"
2: "parse-wp-rest-api-1-parse-js"

到目前为止到目前为止,除了文件名(#file-parse-wp-rest-api-1-parse-js)是可选的,如果我从字符串中删除它,则正则表达式不再匹配。

所以我需要使用正则表达式来匹配带或不带文件名的两种情况。

任何帮助将不胜感激。

javascript regex url
1个回答
0
投票

您可以将第一部分更改为使用否定的字符类,而不是[^#]+匹配除#以外的任何字符的字符>

然后您可以将第二部分设为可选,并保留file-之后的部分的捕获组>

请注意,您可以省略正斜杠\/+后的加号

\.com\/([^#]+)(?:#file-(.*))?

Regex demo

© www.soinside.com 2019 - 2024. All rights reserved.