GitHub 上の公開鍵やリポジトリなど、何かしら GitHub にリクエストする前に URL に含めるユーザー名が GitHub で有効なユーザー名かを正規表現でチェックしておきたい。
「github ユーザー名 正規表現」でググってもドンピシャの記事が出てこなかったので、自分のググラビリティとして。
TL; DR (今北産業)
grep(-E)の正規表現
^[a-zA-Z0-9]([a-zA-Z0-9]?|[\-]?([a-zA-Z0-9])){0,38}$
javascript
/^[a-z\d](?:[a-z\d]|-(?=[a-z\d])){0,38}$/i
-
grep
の動作をオンラインでみる @ paiza.IO - GitHub のユーザー名の命名ルール
-
alphanumeric
(半角英数字) および-
(ハイフン) であること - 連続したハイフンは使えない
- ハイフンから始まる、もしくはハイフンで終わることはできない
- 39 文字以内であること
-
-
注意
- この正規表現は GitHub の予約語はチェックしません(例えば
help
,about
,pricing
など) - 命名ルールは https://github.com/join の入力時に表示されるツールチップの内容から得たものです。公式ドキュメントは見つかりませんでした
- この正規表現は GitHub の予約語はチェックしません(例えば
TS; DR
sh/bash/dash
githubUsernameRegex() {
name_input="$1"
regex='^[a-zA-Z0-9]([a-zA-Z0-9]?|[\-]?([a-zA-Z0-9])){0,38}$'
echo "$name_input" | grep -E "$regex" 1>/dev/null
return $?
}
githubUsernameRegex 'a' # true
githubUsernameRegex 'A' # true
githubUsernameRegex '0' # true
githubUsernameRegex '00' # true
githubUsernameRegex 'a-b' # true
githubUsernameRegex 'a-b-123' # true
githubUsernameRegex 'ab-123-cd' # true
githubUsernameRegex 'a-b-c-d-e' # true
githubUsernameRegex '' # false
githubUsernameRegex 'a b' # false
githubUsernameRegex 'a_b' # false
githubUsernameRegex 'a--b' # false
githubUsernameRegex 'a-b-' # false
githubUsernameRegex '-a-b' # false
githubUsernameRegex 'a-b-c-d-' # false
githubUsernameRegex '38aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' # true
githubUsernameRegex '39aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' # true
githubUsernameRegex '40aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' # false
githubUsernameRegex '41aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' # false
- オンラインで動作をみる @ paiza.IO
Node.js/Javascript/npm
/bower
ユーザー なら githubUsernameRegex
がおすすめ。
- github-username-regex @ GitHub
参考文献
- github-username-regex @ GitHub