LoginSignup
4
4

More than 3 years have passed since last update.

GitHub の有効なユーザー名を正規表現で確認する(命名規約の確認)

Last updated at Posted at 2020-09-13

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 文字以内であること。
  • 注意
    • help, about, pricing といった GitHub の予約語はチェックしません
    • 命名ルールは https://github.com/join の入力時に表示されるツールチップの内容から得たものです。公式ドキュメントは見つかりませんでした。

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

Node.js/Javascript/npm/bower ユーザー なら githubUsernameRegex がおすすめ。

参考文献

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4