为什么我的正则表达式与“用户名”约束不匹配

问题描述 投票:0回答:1

我正在努力在代码集中编写一个正则表达式,该正则表达式必须符合为正确的'用户名'定义的以下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

我绝对感到困惑。我实际上知道解决此问题的正确正则表达式是什么,但是,我需要知道自己的正则表达式在哪里出错,从而导致上述错误。请帮助

javascript regex
1个回答
0
投票

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

^(?:[a-zA-Z]{2,}\d*|[a-zA-Z]\d{2,})$

Regex demo


0
投票

嗯,我在这里对RegEx还是陌生的,但是现在我阅读您的模式的方式:

[a-zA-Z]([a-zA-Z]+\d*|\d\d+)
  • 无起始字符串ancor-^
  • [a-zA-Z]-以single字母字符(大写或小写)开始匹配
  • (...)-使用为OR运算符腾出空间的捕获组> |
  • 您的单个字母字符可以之后是任一 [a-zA-Z]+\d*-一个或多个大写或小写字母字符和零个或多个数字] >后接\d\d+-两个或多个数字。
  • 以上是not

您在要求中列出的内容。
© www.soinside.com 2019 - 2024. All rights reserved.