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

时间:2019-10-30 10:39:43

标签: regex vbscript

我尝试了几个小时才能找到符合此条件的正则表达式:

需要找到以下内容:

  • 以2位数开头
  • 结尾为“”
  • 精确到7个字符
  • 必须包含数字和字母
  • 只写大写字母

这里有文字示例:(需要与“ 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}

2 个答案:

答案 0 :(得分:4)

如果我正确理解了您的要求,则可以使用以下方式:

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

Demo

一些注意事项:

  • 如果您不希望在末尾捕获空格,则可以用前瞻字符(即\s)替换最后的(?=\s)

  • 如果只想接受ASCII空格字符,不接受其他空格字符,则在两种情况下都可以使用[ ]代替\s

答案 1 :(得分:2)

您可以使用单词边界和正向前行来在末尾声明空格,但不对其进行匹配以仅获得159C5F

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

Regex demo