我正在努力在代码集中编写一个正则表达式,该正则表达式必须符合为正确的'用户名'定义的以下4个约束:
1)用户名只能使用字母数字字符。
2)用户名中唯一的数字必须在末尾。最后可以有零个或多个。用户名不能以数字开头。
3)用户名字母可以小写和大写。
4)用户名必须至少两个字符长。两个字符的用户名只能使用字母作为字符。
这是我想出的正则表达式,在下面的代码中(第一行)
let userCheck = /[a-zA-Z]([a-zA-Z]+\d*|\d\d+)/; // the regex I wrote
let result = userCheck.test(username);
但是,它显示以下故障
Your regex should not match BadUs3rnam3
Your regex should not match c57bT3
我绝对感到困惑。我实际上知道解决此问题的正确正则表达式是什么,但是,我需要知道自己的正则表达式在哪里出错,从而导致上述错误。请帮助
您可以匹配2个字符a-zA-Z和0+个数字,或者如果有一个字符a-zA-Z,则匹配2个或更多数字以通过规则两个字符的用户名只能使用字母作为字符。
^(?:[a-zA-Z]{2,}\d*|[a-zA-Z]\d{2,})$
嗯,我在这里对RegEx
还是陌生的,但是现在我阅读您的模式的方式:
[a-zA-Z]([a-zA-Z]+\d*|\d\d+)
^
[a-zA-Z]
-以single字母字符(大写或小写)开始匹配(...)
-使用为OR
运算符腾出空间的捕获组> |
[a-zA-Z]+\d*
-一个或多个大写或小写字母字符和零个或多个数字或] >后接\d\d+
-两个或多个数字。以上是not