1. ホーム
  2. javascript

[解決済み] 正規表現|使用可能なユーザー名を制限する

2022-02-25 22:36:05

質問

質問

ユーザー名を作成する際に、ユーザーが守らなければならない簡単なルールをご紹介します。

1) ユーザーネームは英数字のみ使用可能です。

2) ユーザー名の中の数字は最後だけでなければなりません。末尾は0個でもそれ以上でも構いません。ユーザー名は数字で始めることはできません。

3) ユーザー名の文字は、小文字でも大文字でも構いません。

4) ユーザーネームは最低2文字以上でなければなりません。2文字のユーザーネームは、文字としてアルファベットのみを使用することができます。

マイコード

let username = "JackOfAllTrades";
let userCheck = /^(a-za-z|a-z(a-z+|\d\d+))(\d*)$/i; 
let result = userCheck.test(username);

質問

このコードはどうすれば直るのでしょうか? このコードのどこがうまくいかないのでしょうか?

解決方法を教えてください。

編集 : ユーザー名が2文字以上の場合、先頭の文字は1つだけであること。そのため、この回答を適宜修正し、根本的にはVenkateshの解決策2と同じ正規表現が得られるようにしました。


アクセント記号のない文字だけを希望されているのではと思ったのですが。

正規表現で /^[a-z]([a-z]+\d*|\d{2,})$/i ( テストはこちら ) の場合、以下のようなマッチング/失敗が発生します (1つずつテストする場合)。

• Paul46:  matches
• 4frank:  fails
• mike:    matches
• jus6tin: fails 
• p87:     matches
• k9:      fails
• AL10:    matches