以字母开头,必须包含字母和数字

Start with letter, must container letter and numbers

我花了好几个小时来寻找匹配这个标准的正则表达式:

需要找大文如下:

这里是一个文本示例:(需要匹配“159C5F”

AT exempt acc to §§ 4 Nr. 1A UStG iVm 6 USTG
                                                                                                                            254,49/100L    977,23
159C5F Magnatec St-St 0W-30 D, 20L E4                                                                                                   0,00%
Commodity Code :

以下是我的一些尝试:

(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]{6})
[0-9]{2}\S*[a-zA-Z0-9]{4}
[0-9]\S*[a-zA-Z0-9]{6}
[a-zA-Z0-9]{6}

如果我正确理解你的要求,你可以使用这样的东西:

\b\d\d(?=\S*?[A-Z]\S*?\s)[A-Z0-9]{4}\s

Demo.

一些注意事项:

  • 如果您不想在最后捕获 space,您可以将最后的 \s 替换为 Lookahead(即 (?=\s)) .

  • 如果您只想接受 ASCII space 字符而不接受其他白色 space 字符,您可以使用 [ ] 而不是 \s在这两种情况下。

您可以使用字边界和正向前瞻来断言最后的 space 但不匹配它以匹配仅获得 159C5F

\b\d{2}(?=[A-Z0-9]{4} )[A-Z0-9]*[A-Z][A-Z0-9]*\b
  • \b 字边界
  • \d{2}匹配2个数字
  • (?=正向前瞻,断言右边的是
    • [A-Z0-9]{4} 匹配 4 次任何列出的后跟 space
  • ) 关闭前瞻
  • [A-Z0-9]*[A-Z][A-Z0-9]* 匹配 0+ 次 A-Z0-9 至少有一个大写字符
  • \b 字边界

Regex demo