正则表达式匹配4组字母/数字,用连字符分隔

时间:2011-07-14 20:05:39

标签: regex vb.net

我需要一个与此模式匹配的正则表达式(大小写无关紧要):

  

066B-E77B-CE41-4279

4组字母或数字每组4个字符,每组之间用连字符。

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:6)

^(?:\w{4}-){3}\w{4}$

说明:

    ^                  # must match beginning of string
     (?:               # make a non-capturing group (for duplicating entry)
       \w{4}           # a-z, A-Z, 0-9 or _ matching 4 times
       -               # hyphen
     ){3}              # this group matches 3 times
     \w{4}             # 4 more of the letters numbers or underscore
    $                  # must match end of string

这是我最好的选择。然后,您可以使用Regex Match (static)

P.S。有关正则表达式的更多信息,请参见here

P.P.S。如果您不想匹配下划线,则上面的\w可以用[a-zA-Z0-9]替换(两次)(称为匹配小写和大写字母和数字的类)。 e.g。

^(?:[a-zA-Z0-9]{4}-){3}[a-zA-Z0-9]{4}$

答案 1 :(得分:2)

尝试:

[A-Za-z0-9]{4}\-[A-Za-z0-9]{4}\-[A-Za-z0-9]{4}\-[A-Za-z0-9]{4}

答案 2 :(得分:0)

有了这么少的数据样本,要确定你真正想要的东西并不容易。

我将假设该字符串中的所有字符都是十六进制数字,这就是您需要搜索的内容。

在这种情况下,你需要一个像这样的正则表达式:

^[a-f0-9]-[a-f0-9]-[a-f0-9]-[a-f0-9]$

如果他们可以任何字母,请将f替换为z s。

哦,并使用myRE.IgnoreCase = True使其不区分大小写。

如果您需要有关正则表达式的进一步建议,我建议http://www.regular-expressions.info/作为好站点。他们甚至有VB.net-specific page

答案 3 :(得分:0)

假设你的例子:

  • 有四组字母,用短划线分隔。
  • 每组是四个字母。
  • 这些字母是十六进制数字。

此模式将匹配:

^[\dA-F]{4}-[\dA-F]{4}-[\dA-F]{4}-[\dA-F]{4}$

请注意^$匹配字符串的开头和结尾,如果要匹配整个字符串而不检查模式是否出现在字符串中,这很重要。

您还可以使用模式中的重复:

^(?:[\dA-F]{4}-){3}[\dA-F]{4}$