用于查找包含字符和数字的字符串的正则表达式

RegEx for finding strings with chars and numbers

我正在尝试匹配零件号与普通文本混合的字符串。

这里有几个例子。

  1. 拖车控制 Ecu,Gl3t-19H378-Ac
  2. 组件,Pwr,测试 Gd,Priv-M50t3
  3. 左,后,Brn-Tan,Pwr,4DR,Mju1
  4. T-Case Ecu,56029590AE
  5. 对,盲点模块,284K0 9HS0F

在这些例子中,我试图匹配。

  1. Gl3t-19H378-Ac
  2. Priv-M50t3
  3. Mju1
  4. 56029590AE
  5. 284K0 和 9HS0F

我在 .Net 中,这是我一直在使用的正则表达式。

(\b[a-zA-Z0-9][a-zA-Z0-9\-]{1,32}(\b|$)(?<=[0-9]))

如果比赛以数字结尾,它可以满足我的需要。我想要的规则是匹配单词边界之间的任何字符串,这些字符串要么是所有数字,要么是数字和字符的混合,但绝不仅仅是字符。

应该这样做:

\b[a-zA-Z0-9-]*\d[a-zA-Z0-9-]*\b

如果需要限制长度最大为32,添加前瞻:

\b(?=[a-zA-Z0-9-]{1,32}\b)[a-zA-Z0-9-]*\d[a-zA-Z0-9-]*\b

如果下划线也可以,可以用[\w-]代替[a-zA-Z0-9-]