1

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

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

4 回答 4

4

你可以使用:

\d{2}-\d{5}-\d{6}
于 2012-09-14T08:49:34.057 回答
3

正则表达式有不止一种方言,因此,在不知道您正在使用哪个方言的情况下,最好只使用它们通常都有的构造。

那将是:

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

并非所有正则表达式引擎都将支持\d,并且我已确保您具有开始和结束标记,以便您获得所需的格式(除非它与整个字符串匹配,否则您可能会发现它错误地允许 15 个字符两侧的内容)。

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

^[0-9][0-9]-[0-9][ .... $
于 2012-09-14T08:55:59.693 回答
1

试试这个。这个对我有用。

^(\d){2}\-(\d){5}\-(\d){6}$
于 2012-09-14T08:54:47.303 回答
0

你可以用这个

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

或者

\d{2}-\d{5}-\d{6}
于 2012-09-14T08:52:01.790 回答