5 回答

TA貢獻1851條經驗 獲得超4個贊
解決方案 1:
let username = "JackOfAllTrades";
let userCheck = /^[a-z]([0-9][0-9]+|[a-z]+\d*)$/i;
let result = userCheck.test(username);
代碼說明
^ - 輸入的開始
[a-z] - 第一個字符是一個字母
[0-9][0-9]+ - 以兩個或多個數字結尾
|- 或
[a-z]+ - 下一個包含一個或多個字母
\d* - 并以零個或多個數字結尾
$ - 輸入結束
i - 忽略輸入的情況
解決方案 2:
let username = "JackOfAllTrades";
const userCheck = /^[a-z]([0-9]{2,}|[a-z]+\d*)$/i;
let result = userCheck.test(username);
代碼說明
^ - 輸入的開始
[a-z] - 第一個字符是一個字母
[0-9]{2,0} - 以兩個或多個數字結尾
|- 或
[a-z]+ - 下一個包含一個或多個字母
\d* - 并以零個或多個數字結尾
$ - 輸入結束
i - 忽略輸入的情況

TA貢獻1865條經驗 獲得超7個贊
這是我的解決方案:
/^[a-z][a-z]+$|^[a-z]+\w\d+$/i
/^ - 在字符串的開頭,找到
[a-z][a-z]+$ - 至少2個字母,可以更多,直到最后(這意味著像test12這樣的字符串不會在這個字母中通過)
|- OR(對于它有更多的數字和超過2個字符的情況^[a-z]+ - 以任何字母開頭,可以更多
\w - 任何字符,可以是 a-z 和 0-9,它以這種方式用于強制字符串至少包含 3 個字符
\d+$ - 以至少具有一個數字的鏈結尾(如果它的末尾沒有至少一個數字,它將在條件的第一個中匹配)
/i - 考慮大寫字符

TA貢獻1820條經驗 獲得超10個贊
我錯過了OP要求中的一些東西:如果用戶名長度超過2個字符,則只能有一個前導字母。因此,我相應地更正了這個答案,我們從根本上得到了與Venkatesh的解決方案2相同的正則表達式。
我以為你只希望沒有重音字符。
使用正則表達式(在此處測試),您將獲得以下匹配/失敗(逐個測試時):/^[a-z]([a-z]+\d*|\d{2,})$/i
? Paul46: matches
? 4frank: fails
? mike: matches
? jus6tin: fails
? p87: matches
? k9: fails
? AL10: matches

TA貢獻1785條經驗 獲得超8個贊
下面的解決方案可以很好地找到符合以下條件的用戶名 用戶名只能使用字母數字字符。
用戶名中唯一的數字必須位于末尾??梢杂辛銈€或 2 個。最后還有更多。用戶名不能以數字開頭。
用戶名字母可以是小寫和大寫。
用戶名的長度必須至少為兩個字符。雙字符用戶名只能使用字母作為字符。
let username = "JackOfAllTrades";
let userCheck = /^[a-z]+(\d\d+$|[a-z]+\d*$)/i; // Change this line
let result = userCheck.test(username);
console.log(result)
描述:
^[a-z]+
- 匹配 .(+)
alphabet([a-z])
beginning(^)
\d\d+$
- 如果開頭只有一個字母,則匹配結尾 2 或更多(\d 表示一個,\d+ 表示一個或多個)數字。[a-z]+\d*$
- 匹配一個或多個字母表以及末尾的0個或多個數字。i
- 忽略字母大小寫的標志|
- 符號選擇匹配兩個正則表達式
添加回答
舉報