正则表达式匹配简单的“id”值?

时间:2011-03-19 16:44:32

标签: java regex

我需要一个以两个字符开头的行的正则表达式,后跟2-4个数字或2-4个数字后跟“ - ”,然后是2-4个数字。

示例:

  • AB125
  • AC123-25
  • BT1-2535

看起来很简单,但我一直坚持下去......

2 个答案:

答案 0 :(得分:4)

正则表达式总是看起来很简单,直到你尝试使用它们: - )

这个特殊的可以通过以下方式完成:

^[A-Z]{2}([0-9]{2,4}-)?[0-9]{2,4}$

这是:

  • 2个alpha(大写)字符。
  • 可选的2到4位和连字符序列。
  • 强制性的2到4位数序列。
  • 开始和结束标记。

最后一个BT1-2535与文本规范不匹配,因为它在连字符之前只有一个数字。我假设这是一个错字。如果你想允许使用小写,你还必须更改字符位以使用[A-Za-z]

答案 1 :(得分:1)

怎么样:

^[A-Z]{2}\d{2,4}(?:-\d{2,4})?

这匹配两个大写字母后跟2-4个数字,后跟(可选)连字符和另外2-4个数字。