由于我很少编写自己的正则表达式,这是我不知道从哪里开始的几次之一。我遇到一个问题,处理用破折号分隔的未知数量的整数。由于很难想象,我会给出一个例子......
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等在线测试器中使用。
答案 0 :(得分:2)
[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+-
- 最后一个数字对,可以是任意长度