Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我的正则表达式与';用户名';约束条件_Javascript_Regex - Fatal编程技术网

Javascript 为什么我的正则表达式与';用户名';约束条件

Javascript 为什么我的正则表达式与';用户名';约束条件,javascript,regex,Javascript,Regex,我正在努力编写一个关于代码营的正则表达式,它必须符合为正确的“用户名”定义的以下4个约束条件 1) 用户名只能使用字母数字字符 2) 用户名中唯一的数字必须在末尾。最后可以有零个或多个。用户名不能以数字开头 3) 用户名字母可以是小写和大写 4) 用户名必须至少有两个字符长。两个字符的用户名只能使用字母作为字符 下面是我在下面的代码(第一行)中找到的正则表达式 但是,它显示以下故障 Your regex should not match BadUs3rnam3 Your regex should

我正在努力编写一个关于代码营的正则表达式,它必须符合为正确的“用户名”定义的以下4个约束条件

1) 用户名只能使用字母数字字符

2) 用户名中唯一的数字必须在末尾。最后可以有零个或多个。用户名不能以数字开头

3) 用户名字母可以是小写和大写

4) 用户名必须至少有两个字符长。两个字符的用户名只能使用字母作为字符

下面是我在下面的代码(第一行)中找到的正则表达式

但是,它显示以下故障

Your regex should not match BadUs3rnam3
Your regex should not match c57bT3

我完全糊涂了。我实际上知道这个问题的正确正则表达式是什么,但是,我需要知道我自己的正则表达式哪里出了问题,这导致了上述错误。请帮助

您的代码通过,因为您没有使用锚,所以您得到了部分匹配

您可以将模式更新为
^[a-zA-Z](?:[a-zA-Z]+\d*|\d{2,})$

另一种写入方法可以是匹配2个字符a-zA-Z和0+个数字,或者如果有单个字符a-zA-Z,则匹配2个或更多数字以通过规则 两个字符的用户名只能使用字母作为字符

let userCheck=/^[a-zA-Z](?:[a-zA-Z]+\d*|\d{2,})$/;
[
“BadUs3rnam3”,
“c57bT3”,
“aa”,
“a111111”,
“a1”,
"11"

].forEach(用户名=>console.log(用户名+”:“+userCheck.test(用户名))我忘了一个3字符的2位结尾的箱子。谢谢你的详细解释谢谢@JvdV!虽然我不知道为什么,但是添加结束和开始字符串解决了这个问题。我将正则表达式改为>
/^[a-zA-Z]([a-zA-Z]+\d*$\d\d+$)/
没问题@Maryam,我删除了我的注释/答案,因为它现在已完全包含在剩下的答案中=)。顺便说一句,如果没有ancors,您将允许您的模式开始匹配中间字符串,否定您希望查看整个字符串以查看其间的所有内容的事实。也别忘了接受下面的答案。啊,我明白了。再次感谢
Your regex should not match BadUs3rnam3
Your regex should not match c57bT3
^(?:[a-zA-Z]{2,}\d*|[a-zA-Z]\d{2,})$