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

问题


以下是用户在创建用户名时必须遵循的一些简单规则。


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);


qq_遁去的一_1
浏览 289回答 5
5回答

繁花不似锦

解决方案 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 - 忽略输入的情况

莫回无

这是我的解决方案: /^[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 - 考虑大写字符

拉莫斯之舞

我错过了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

慕的地10843

下面的解决方案可以很好地找到符合以下条件的用户名 用户名只能使用字母数字字符。用户名中唯一的数字必须位于末尾。可以有零个或 2 个。最后还有更多。用户名不能以数字开头。用户名字母可以是小写和大写。用户名的长度必须至少为两个字符。双字符用户名只能使用字母作为字符。let username = "JackOfAllTrades";let userCheck = /^[a-z]+(\d\d+$|[a-z]+\d*$)/i; // Change this linelet result = userCheck.test(username);console.log(result)描述:^[a-z]+- 匹配 .(+)alphabet([a-z])beginning(^)\d\d+$- 如果开头只有一个字母,则匹配结尾 2 或更多(\d 表示一个,\d+ 表示一个或多个)数字。[a-z]+\d*$- 匹配一个或多个字母表以及末尾的0个或多个数字。i- 忽略字母大小写的标志|- 符号选择匹配两个正则表达式

慕丝7291255

let userCheck = /^[a-z]([a-z]+|[0-9]\d+)\d*$/i;以上通过了此问题的所有测试用例
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript