序列号匹配的正则表达式

时间:2012-09-14 08:48:37

标签: .net regex

我需要编写一个正则表达式来检查序列号是否与以下格式匹配:

XX-XXXXX-XXXXXX

示例:50-99627-036043

条件的简要说明:

  • 必须正好是15个字符长
  • 必须只包含数字 - 无字母
  • 第2和第8位的破折号分隔符(从0开始计算)

我使用txt2re.com生成了以下内容,但它不起作用,我不确定如何调试它:

(\\d)(\\d)(-)(\\d)(\\d)(\\d)(\\d)(\\d)(-)(\\d)(\\d)(\\d)(\\d)(\\d)(\\d)

任何帮助都将不胜感激。

4 个答案:

答案 0 :(得分:5)

您可以使用:

\d{2}-\d{5}-\d{6}

答案 1 :(得分:2)

正则表达式有多种方言,因此,如果您不知道自己使用哪种方言,最好只使用 all 通常具有的结构。

那将是:

^[0-9]{2}-[0-9]{5}-[0-9]{6}$

并非所有正则表达式引擎都支持\d,我确保您拥有开始和结束标记,以便完全您想要的格式(除非它匹配整个字符串,您可能会发现它错误地允许15个字符两边的内容。)

如果由于某些奇怪的原因,您的正则表达式引擎甚至不支持{m,n}类型计数,则需要完全指定每个数字:

^[0-9][0-9]-[0-9][ .... $

答案 2 :(得分:1)

试试这个。它对我有用。

^(\d){2}\-(\d){5}\-(\d){6}$

答案 3 :(得分:0)

您可以使用此

[0-9]{2}-[0-9]{5}-[0-9]{6}

\d{2}-\d{5}-\d{6}