正则表达式允许中间的单个空格但具有字符限制。

时间:2016-10-05 12:41:19

标签: javascript regex

请原谅我的无知,但我真的需要帮助,我需要这个正则表达式:[A-Za-z0-9]+\s?[A-Za-z0-9]+(一个用户名允许中间有一个空格,但不能在开头或结尾。)但是限制字符总数至最小3和最大30。

我尝试使用否定前瞻来调整this answer,但到目前为止还没有用。

它必须是一个正则表达式,它不能使用jQuery或其他任何东西。

2 个答案:

答案 0 :(得分:3)

你可以在这里使用积极的前瞻:

^(?=.{3,30}$)[A-Za-z0-9]+(?:\s[A-Za-z0-9]+)?$

请参阅regex demo

详细说明:

  • ^ - 字符串开头
  • (?=.{3,30}$) - 可以有3到30个字符(除了换行符,将.替换为[A-Za-z0-9\s]更具体)
  • [A-Za-z0-9]+ - 1个字母数字字符
  • (?:\s[A-Za-z0-9]+)? - a的可选(1或0)次出现
    • \s - 空白
    • [A-Za-z0-9]+ - 1个以上的字母数字符号
  • $ - 字符串结束。

答案 1 :(得分:3)

您可以使用:

(?=^[A-Za-z0-9]+\s?[A-Za-z0-9]+$).{3,30}

a demo on regex101.com。它将匹配:

username123    # this one
user name 123  # this one not (two spaces!)
user name123   # this one
u sername123   # this one
 username123   # this one not (space in the beginning!)