为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式 |限制可能的用户名

正则表达式 |限制可能的用户名

qq_遁去的一_1 2022-08-04 10:35:15
问题以下是用户在创建用户名时必须遵循的一些简单规则。1) 用户名只能使用字母数字字符。2)用户名中唯一的数字必须在末尾。最后可以有零个或多个。用户名不能以数字开头。3)用户名字母可以是小写和大写。4)用户名必须至少两个字符长。双字符用户名只能使用字母作为字符。我的代码let username = "JackOfAllTrades";let userCheck = /^(a-za-z|a-z(a-z+|\d\d+))(\d*)$/i; let result = userCheck.test(username);
查看完整描述

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 - 忽略输入的情况


查看完整回答
反对 回复 2022-08-04
?
莫回无

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 - 考虑大写字符


查看完整回答
反对 回复 2022-08-04
?
拉莫斯之舞

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


查看完整回答
反对 回复 2022-08-04
?
慕的地10843

TA贡献1785条经验 获得超8个赞

下面的解决方案可以很好地找到符合以下条件的用户名 用户名只能使用字母数字字符。

  1. 用户名中唯一的数字必须位于末尾。可以有零个或 2 个。最后还有更多。用户名不能以数字开头。

  2. 用户名字母可以是小写和大写。

  3. 用户名的长度必须至少为两个字符。双字符用户名只能使用字母作为字符。

let username = "JackOfAllTrades";

let userCheck = /^[a-z]+(\d\d+$|[a-z]+\d*$)/i; // Change this line

let result = userCheck.test(username);

console.log(result)

描述:

  1. ^[a-z]+- 匹配 .(+)alphabet([a-z])beginning(^)

  2. \d\d+$- 如果开头只有一个字母,则匹配结尾 2 或更多(\d 表示一个,\d+ 表示一个或多个)数字。

  3. [a-z]+\d*$- 匹配一个或多个字母表以及末尾的0个或多个数字。

  4. i- 忽略字母大小写的标志

  5. |- 符号选择匹配两个正则表达式


查看完整回答
反对 回复 2022-08-04
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

let userCheck = /^[a-z]([a-z]+|[0-9]\d+)\d*$/i;

以上通过了此问题的所有测试用例


查看完整回答
反对 回复 2022-08-04
  • 5 回答
  • 0 关注
  • 288 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信