正则表达式:匹配十六进制/键字符串

时间:2013-03-16 07:11:36

标签: regex

我自己也试过创建一个正则表达式来做这件事,但说实话,我现在的想法是如此令人难以置信,我必须寻求帮助......这对未来的人也有帮助。

我有以下输入模板:

06-6A-BF-05-AF-84-DF-A4-23-7C-BE-B4-6C-95-D7
JK1T-XTSRV-2HC4D-RP4S7-ZMKRG

我需要从输入字符串中选出这两个字符串。输入字符串可能如下所示:

JK1T-XTSRV-2HC4D-RP4S7-ZMKRG
FDGF-A1S0M-5M8XJ-T08WC-BCZSJ
C6-6C-1C-17-B7-EE-BE-EA-E3-7C-EF-23-6C-12-F1
asdf234 ,f C6-324_EE

在这种情况下,将返回以下内容:

JK1T-XTSRV-2HC4D-RP4S7-ZMKRG, FDGF-A1S0M-5M8XJ-T08WC-BCZSJ, C6-6C-1C-17-B7-EE-BE-EA-E3-7C-EF-23-6C-12-F1

因此,正则表达式需要具有以下限制才能匹配字符串:

  • 15个由-
  • 分隔的两个字符(数字或字母)对
  • 5个由-
  • 分隔的四个字符(数字或字母)对

哪些正则表达式会匹配这些?

1 个答案:

答案 0 :(得分:1)

您应该使用两个正则表达式:

(\w{2}-){14}\w{2}
\w{4}-(\w{5}-){3}\w{5}

第二种类型实际上是一个四个字符和四个五个字符。

测试1: http://fiddle.re/h3ve6

测试2: http://fiddle.re/3a5e6