需要正则表达式的帮助

时间:2013-12-17 23:23:08

标签: regex

由于我很少编写自己的正则表达式,这是我不知道从哪里开始的几次之一。我遇到一个问题,处理用破折号分隔的未知数量的整数。由于很难想象,我会给出一个例子......

LHZ345-347-348-349-362-363-LMZ323-342-344-345-346-180100-

鉴于此声明,正则表达式应返回:

LHZ345-347-348-349-362-363-
LMZ323-342-344-345-346-180100-

考虑到这一点,我需要编写一个正则表达式来检查3个A-Z字符,紧接着是一个3位整数。从那时起,除了可以具有任何长度的最后一个数字对之外,可以跟随任意数量的3位整数+短划线对。仅使用破折号,整数0-9和大写字母A-Z。

如果有任何正则表达式天才愿意帮助我,如果这是一个简单的问题,那将是非常棒的。如果没有,如果你能指引我到一个你觉得有用的网站会很棒。在此先感谢您的帮助! - 布兰登

编辑1:为了展示一些尝试,[A-Z]{3}...\d+-就是我的全部。据我所知,这应该可行,但我在中间部分停留在未知数量的整数。

编辑2 :接受破折号时,需要对以下答案中发布的正则表达式进行哪些更改? 3位整数之间的标志?此外,我似乎无法将正则表达式输入到preg_match()中,并且所有测试用例都可以正常工作,但正则表达式可以在regexpal等在线测试器中使用。

2 个答案:

答案 0 :(得分:2)

Working for your sample data:

[A-Z]{3}([0-9]{3}\-)+[0-9]+\-

答案 1 :(得分:1)

这是你的正则表达式:

[A-Z]{3}(?:\d{3}-)+\d+-

分解的:

  • [A-Z]{3} - 3个A-Z字符
  • (?: ... )+ - 一个或多个
    • \d{3}- - 3位整数+短划线对
  • \d+- - 最后一个数字对,可以是任意长度