正则表达式验证最多6个字符的混合数字

时间:2018-09-27 15:13:28

标签: javascript regex

我需要正则表达式验证混合长度,总长度为6个字符,其中4-6个字符为大写/数字和0-2个空格。

我尝试过

^[A-Z0-9]{4,6}+[\s]{0,2}$

但是它的最大长度为8个字符,但我最多需要6个字符。

4 个答案:

答案 0 :(得分:3)

如果字母数字字符只能出现在字符串的开头,而空格可以出现在结尾(即字母数字和空格的顺序很重要),则可以使用

/^(?=.{6}$)[A-Z0-9]{4,6}\s*$/

请参见regex demo

详细信息

  • ^-字符串的开头
  • (?=.{6}$)-字符串长度被限制为恰好6个非线性换行符
  • [A-Z0-9]{4,6}-4、5或6个大写ASCII字母或数字
  • \s*-0 +空格(但实际上,只能添加0、1或2,因为总长度已通过先行验证)
  • $-字符串的结尾。

如果要在字符串内的任何地方匹配字母数字和空格,则需要一个基于lookaround的正则表达式,例如

^(?=(?:[^A-Z0-9]*[A-Z0-9]){4,6}[^A-Z0-9]*$)(?=(?:\S*\s){0,2}\S*$)[A-Z0-9\s]{6}$

请参见regex demo

详细信息

  • ^-字符串的开头
  • (?=(?:[^A-Z0-9]*[A-Z0-9]){4,6}[^A-Z0-9]*$)-正向超前,需要在字符串中的任意位置出现4到6个字母或数字
  • (?=(?:\S*\s){0,2}\S*$)-正向超前,需要在字符串中的任意位置存在0到2个空格
  • [A-Z0-9\s]{6}-6个ASCII大写字母,数字或空格
  • $-字符串的结尾。

为缩短模式,第二前行可以写为(?!(?:\S*\s){3}),如果字符串内任何地方有3个空格字符,则匹配将失败。参见the regex demo

答案 1 :(得分:1)

您可以使用|个字符将几种情况合而为一。

const regex = /(^[A-Z0-9]{4}\s{2}$)|(^[A-Z0-9]{5}\s$)|(^[A-Z0-9]{6}$)/g;
alert(regex.test(prompt('Enter input, including space(s)')));

答案 2 :(得分:1)

如果要在末尾匹配零个,一个或两个空格,则可以在这三种情况下使用alternation

{% block content %}{% endblock %}

Regex demo

说明

  • ^(?:[A-Z0-9]{4}[ ]{2}|[A-Z0-9]{5}[ ]|[A-Z0-9]{6})$断言字符串的开头
  • ^非捕获组
    • (?:匹配大写或数字4次,后跟2个空格
    • [A-Z0-9]{4}[ ]{2}
    • |匹配大写或数字5次,后跟1个空格
    • [A-Z0-9]{5}
    • |匹配大写字母或数字6次
  • [A-Z0-9]{6}关闭非捕获组
  • )声明字符串的结尾

答案 3 :(得分:1)

/^(?=.{6}$)[A-Z0-9]{4,6}\s*$/

请尝试使用此正则表达式。最多输入6个字符。 4或5或6个字符。并用空格补全6位数字。