Javascript 如何创建正则表达式来检查带有数字和空格的用户名?

Javascript 如何创建正则表达式来检查带有数字和空格的用户名?,javascript,Javascript,我想创建一个正则表达式,可以用以下术语检查用户名: 前两个字母是a-z(不允许数字) 两个字母后的数字是允许的 空间是允许的-不是在开始 后面的空格只能是a-z,不能是数字/特殊字符(john 2doe),但john d2oe可以 以上规则适用于字符串中的每个单词 没有特殊字符允许这样的~!@$%^&*() 这就是我到目前为止所做的: /^([A-Za-z]{2,})/.test('john#~ doe') // true. - not good. it should be false.

我想创建一个正则表达式,可以用以下术语检查用户名:

  • 前两个字母是a-z(不允许数字)
  • 两个字母后的数字是允许的
  • 空间是允许的-不是在开始
  • 后面的空格只能是a-z,不能是数字/特殊字符(
    john 2doe
    ),但
    john d2oe
    可以
  • 以上规则适用于字符串中的每个单词
  • 没有特殊字符允许这样的
    ~!@$%^&*()
这就是我到目前为止所做的:

 /^([A-Za-z]{2,})/.test('john#~ doe') // true. - not good. it should be false. 
第一次和第二次我解决了它。但剩下的怎么办呢

^([a-zA-Z]{2})([a-zA-z0-9]*)([ ]*)([a-zA-Z]+)([a-zA-Z0-9]*)$
清除:

johnd2oe
jo hnd2oe
失败:

john 2doe
j2hn d2oe
 ohn d2oe
清除:

johnd2oe
jo hnd2oe
失败:

john 2doe
j2hn d2oe
 ohn d2oe

这里有一个应该适合你

^([A-z]{2}([A-z0-9]|\s[A-z]{2})*)*$

但请注意:你的规则有点矛盾。此正则表达式不允许使用
john d2oe
名称,因为
d2oe
的前两个字母不是字母。这可以通过使用

^([A-z]{2}([A-z0-9]|\s[A-z])*)*$

在这里,我们为每个单词定义规则,然后说我们将匹配任意数量的规则。每个单词以2个字母开头,然后后跟任意数量的字母和数字,或者后跟至少1个(或在第一个语句中为2个)字母的空格


看一看,我希望这有帮助

这里有一个应该适合你的

^([A-z]{2}([A-z0-9]|\s[A-z]{2})*)*$

但请注意:你的规则有点矛盾。此正则表达式不允许使用
john d2oe
名称,因为
d2oe
的前两个字母不是字母。这可以通过使用

^([A-z]{2}([A-z0-9]|\s[A-z])*)*$

在这里,我们为每个单词定义规则,然后说我们将匹配任意数量的规则。每个单词以2个字母开头,然后后跟任意数量的字母和数字,或者后跟至少1个(或在第一个语句中为2个)字母的空格

看一看,我希望这有帮助