29 Stimmen

Regulärer Ausdruck für Git-Repository

Was ist der richtige reguläre Ausdruck für Git-Repositories?

Beispiel-Link: git@github.com:someone/someproject.git

also wird es sein wie [Benutzer]@[Server]:[Projekt].git

Server kann url oder ip sein Projekt kann auch andere als alphanumerische Zeichen wie '-' enthalten Ich bin mir nicht sicher, was die Rolle von '/' ist.

Irgendwelche Vorschläge?

0 Stimmen

Ich bin nicht davon überzeugt, dass ein regulärer Ausdruck die beste Lösung für das Parsen dieser Syntax ist, auch wenn viele anderer Meinung sind. Siehe blog.codinghorror.com/

1voto

Ashish Pandey Punkte 33
((git@|http(s)?:\/\/)([\w\.@]+)(\/|:))([\w,\-,\_]+)\/([\w,\-,\_]+)(.git){0,1}((\/){0,1})

Dadurch erhalten Sie auch Benutzer und Projektarchiv in einer separaten Gruppe.

0voto

Chris Punkte 10147

Git-Repositorys können viele Formen und Größen haben, die nicht wie dieses Beispiel aussehen. Siehe die git-clone Manpage für eine vollständige Liste.

Zu den gebräuchlichsten gehört die Verwendung der http o git Protokolle anstelle von SSH (oder auch die manuelle Angabe des ssh:// Protokoll). Benutzernamen sind optional, es muss nicht zwingend ein / oder eine .git , Häfen können angegeben werden usw. usw.

Im Moment lassen Sie im Grunde nur private Github-Repos zu, oder solche, die ihnen ähnlich sehen. Ist es das, was Sie wollen? Wenn ja, dann sieht die Antwort von S. Mark gut aus!

Wenn Sie ein beliebiges Git-Repository akzeptieren wollen, ist es wahrscheinlich am besten, sicherzustellen, dass es sich um eine gültige URI handelt, und dann git oder eine Git-Bibliothek, um sicherzustellen, dass ein echtes Projektarchiv unter dieser URI zugänglich ist.

0voto

Versuchen Sie diese Regex:

/^([A-Za-z0-9]+@|http(|s)\:\/\/)([A-Za-z0-9.]+(:\d+)?)(?::|\/)([\d\/\w.-]+?)(\.git)?$/i

Bei mir funktioniert es gut.

0voto

Hiln Penn Punkte 3
export const REGEXP_GIT_REPO_URI = new RegExp(/^(((https?\:\/\/)(((([a-zA-Z0-9][a-zA-Z0-9\-\_]{1,252})\.){1,8}[a-zA-Z]{2,63})\/))|((ssh\:\/\/)?git\@)(((([a-zA-Z0-9][a-zA-Z0-9\-\_]{1,252})\.){1,8}[a-zA-Z]{2,63})(\:)))([a-zA-Z0-9][a-zA-Z0-9\_\-]{1,36})(\/)([a-zA-Z0-9][a-zA-Z0-9\_\-]{1,36})((\.git)?)$/);

Das einzige Problem ist die fehlende Unterstützung der IP-Adresse.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X