GitHub Repository URL in GO
Match GitHub repository URLs and capture the owner and repo segments.
Try it in the GO tester →Pattern
regexGO
https?:\/\/(?:www\.)?github\.com\/([A-Za-z0-9](?:[A-Za-z0-9\-]{0,38})?)\/([A-Za-z0-9._\-]{1,100}) (flags: g)Go (RE2) code
goGo
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`https?:\/\/(?:www\.)?github\.com\/([A-Za-z0-9](?:[A-Za-z0-9\-]{0,38})?)\/([A-Za-z0-9._\-]{1,100})`)
input := `Source at https://github.com/vercel/next.js or https://www.github.com/torvalds/linux`
for _, match := range re.FindAllString(input, -1) {
fmt.Println(match)
}
}Uses `regexp.MustCompile` (panics on bad patterns at startup) and `FindAllString` for all matches.
How the pattern works
https?:\/\/(?:www\.)?github\.com\/ matches the domain with optional www and either http/https. The first capture ([A-Za-z0-9](?:[A-Za-z0-9\-]{0,38})?) follows GitHub's username rules: 1–39 chars, alphanumeric + hyphens, no leading/trailing hyphen (simplified). The second capture matches the repo name with the broader allowed character set.
Examples
Input
Source at https://github.com/vercel/next.js or https://www.github.com/torvalds/linuxMatches
https://github.com/vercel/next.jshttps://www.github.com/torvalds/linux
Input
Star: https://github.com/anthropics/claude-codeMatches
https://github.com/anthropics/claude-code
Input
no github linksNo match
—