正则表达式到特定规则


Regex to specific rule

我需要使用正则表达式重新创建此逻辑。

如果 $postcode.长度> 0 和 $postcode.长度<10 和$postcode的第一个字符是一个字母,(第二个或第三个字符是一个数字),那么它是一个匹配项。

我想出了以下正则表达式:

/((^[a-z]+[0-9]?[0-9]){1,9}$)/i

它需要匹配以下示例:

  • B1 8PT
  • SW12 TQ1
  • B12 典型值
  • A1AAAAAAA
  • AA1AAAAAA

编辑:我当前的正则表达式与列表中的任何示例都不匹配。我不知道为什么。任何帮助将不胜感激。

这是一个模式:

^[A-Z](?=.?'d)[A-Z0-9 ]{0,8}$

演示。

我使用前瞻(?=.?'d)来检查第二个或第三个字符,看看它是否是数字。

有一个交替:

/^[a-z](?:[0-9].{0,7}|.[0-9].{0,6})$/i