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
- 忽略字母大小写的标志|
- 符号选择匹配两个正则表达式
添加回答
举报