具有多个条件的不同模式的正则表达式

Regex for a different pattern having multiple conditions

我正在寻找一个完全不同条件的正则表达式。我的表情要求-

  1. 总长度必须为 6、7 或 8 个字符。
  2. 必须包含空格(space 个字符)。
  3. 内码,空位右边的部分,必须是3个字符。
  4. 入站码的第一个字符必须是数字。
  5. 内码的第二个和第三个字符必须是字母。
  6. 外码,空位左边的部分,可以是2、3、4个字符。
  7. 外码的第一个字符必须是字母。

我需要这样的表达方式- BH6 5BG 或 b6 7ba 或 CH11 2ab

字母可以是小写或大写,第一个字符应该是字母,在 space 之后允许三个字符,其中第一个应该是数字。

我制作了仅包含第一个条件的正则表达式 - ^(\d{6}|\d{7}|\d{8})$

我对正则表达式很困惑。有人可以帮我为上述条件构建正则表达式吗?

我相信这会为你做到:

^[a-zA-Z][a-zA-Z0-9]{1,3} \d[a-zA-Z]{2}$

匹配

  • ^ 行首
  • [a-zA-Z] 一个字母字符 - 大写或小写。
  • [a-zA-Z0-9]{1,3} 一个字母字符 - 大写或小写 - 或一个数字,重复 1-3 次。
  • </code>一个space</li> <li><code>\d一个数字
  • [a-zA-Z]{2} 一个字母字符 - 大写或小写 - 重复 2 次。
  • $行尾

Some examples at regex101.

我会用这个:

/^[a-z].{1,3}\s\d[a-z]{2}$/i

细分:

^                               #start of line
 [a-z]                          #alpa
      .{1,3}                    #from 1 to 3 of any char
            \s                  #a whitespace char
              \d                #a digit
                [a-z]{2}        #2 of any aplha
                        $       #end of line
                         i      #case insensitive

以下正则表达式应该有效:

^[A-Za-z][A-Za-z\d]{1,3}\s\d[A-Za-z]{2}$

^(?i)[a-z][a-z0-9]{1,3}\s[0-9][a-z]{2}$

(?i) --> 因为字母可以是小写或大写。

\s --> 恰好有一个 whitespace/gap.

*我用Java检查过。