我需要从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)是可选的,如果我从字符串中删除它,则正则表达式不再匹配。
所以我需要使用正则表达式来匹配带或不带文件名的两种情况。
任何帮助将不胜感激。
您可以将第一部分更改为使用否定的字符类,而不是[^#]+
匹配除#
以外的任何字符的字符>
然后您可以将第二部分设为可选,并保留file-
之后的部分的捕获组>
请注意,您可以省略正斜杠\/+
后的加号
\.com\/([^#]+)(?:#file-(.*))?