正则表达式将 giturl 与可选文件名匹配

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

惠特克给我


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)是可选的,如果我从字符串中删除它,正则表达式doest将不再匹配。


所以我需要正则表达式来匹配有或没有文件名的两种情况。


任何帮助将不胜感激。


牛魔王的故事
浏览 156回答 1
1回答

ABOUTYOU

您可以将第一部分更改为使用否定字符类,而不是匹配除[^#]+#然后,您可以将第二个部件设置为可选,并保留其后部件的捕获组file-请注意,您可以省略正斜杠后面的加号\/+\.com\/([^#]+)(?:#file-(.*))?正则表达式演示
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript