首页 > 解决方案 > 正则表达式 2 位 10 个字母/位

问题描述

我正在尝试制作正则表达式,但有些东西对我不起作用,要求如下:

  1. 最小长度为 1
  2. 最大长度为 12
  3. 前 2 个符号必须是数字
  4. 接下来的 10 必须是字母或数字

这是我到目前为止所拥有的

/^[0-9]{0,2}[a-z][A-Z][0-9]{0,10}$/

你们能告诉我我做错了什么吗?

标签: regex

解决方案


您的模式^[0-9]{0,2}[a-z][A-Z][0-9]{0,10}$在开头匹配 0、1 或 2 位数字。

然后它匹配 2[a-z][A-Z]个小写字符和一个应该出现在字符串中的大写字符 AZ,并使字符串长度至少为 2 个字符。


您可以将第二个数字设为可选,并对字母或数字使用 1 个字符类别。

长度的最小值为 1,最大值为 12。

^(?!\d[a-zA-Z])\d\d?[a-zA-Z0-9]{0,10}$
  • ^字符串的开始
  • (?!\d[a-zA-Z]) 负前瞻,断言不是数字后跟 a-zA-Z
  • \d\d?匹配 1 或 2 位数字
  • [a-zA-Z0-9]{0,10}匹配任何列出范围的 0-10 次重复
  • $字符串结束

正则表达式演示

或者@Scratte在评论中建议的没有前瞻的版本,匹配单个数字和可选的第二个数字,然后是列出范围的 0-10 次重复:

^\d(?:\d[A-Za-z\d]{0,10})?$

正则表达式演示


推荐阅读