Linuxユーザーを認証する正規表現は何ですか?

Linuxユーザーを認証する正規表現は何ですか?

新しいユーザーを追加するときに文字列を確認するにはどうすればよいですか?

正規表現が欲しいです。その正規表現は何ですか?

ベストアンサー1

ほぼ4年も経ったこの質問について徹底的な議論をして申し訳ありません。しかし、インターネット検索結果でかなり高いランクを占めているので、より多くの注意を払う価値があります。

より正確な正規表現は次のとおりです(はい、マンページにもかかわらず知っています)。

^[a-z_]([a-z0-9_-]{0,31}|[a-z0-9_-]{0,30}\$)$

お探しの方にお役に立てば幸いです。

それを破壊する:

  1. そうしなければならないスタート^)には小文字または下線([a-z_])のみが含まれています。これがぴったりです1特徴。

  2. それではそうです。一つ~の誰でも( ( ... )):

    1. ~から0到着31性格( {0,31})手紙数字下線、そして/またはハイフン[a-z0-9_-])、

    または( |)

    1. ~から0到着30上記の文字追加する\$最後にドル記号()があり、

    それから

  3. もう文字がありません過去このモード( $)。

正規表現に慣れていない人のために、2.2ではドル記号にバックスラッシュがありますが、3ではない理由が何であるか疑問に思います。これは、ほとんどの(すべて?)正規表現の変形では、ドル記号が文字列(または行)などの終わりを表すためです。 )。使用されるエンジンによっては、実際の文字列の一部である場合はエスケープする必要があります(バックスラッシュをエスケープとして使用しない正規表現エンジンは想像できません)。

DebianとUbuntuは、POSIX /シャドウアップストリームと完全に互換性のあるユーザー名に対するいくつかの制限を削除しました(たとえば、これが変更されたかどうかはわかりませんが、ユーザー名が数字で始まるようにしました。実際にはこのエラー)。クロスプラットフォームを保証するには、Debian、Ubuntuなどの合格/失敗の確認正規表現の代わりに上記の正規表現を使用することをお勧めします。

おすすめ記事