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

Sye*_*een 4 javascript regex

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

我尝试过像

^[A-Z0-9]{4,6}+[\s]{0,2}$
Run Code Online (Sandbox Code Playgroud)

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

Wik*_*żew 5

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

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

请参阅正则表达式演示

细节

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

如果您想匹配字符串内任何位置的字母数字和空格,您需要一个基于环视的正则表达式,例如

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

请参阅正则表达式演示

细节

  • ^- 字符串的开头
  • (?=(?:[^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 个空白字符,则匹配失败。请参阅正则表达式演示

  • @itch96 `^[\s{0,2}A-Z0-9]{4,6}$` 匹配具有 4、5 或 6 个字符的字符串,这些字符可以是空格、`{`、数字、`、 `、`}` 或大写 ASCII 字母。它是一个类似“^[...]+$”的模式,其中“[...]”是一个*字符类*,它匹配指定字符中的*单个*字符。 (2认同)