构建一个特定的正则表达式

时间:2014-06-13 23:44:45

标签: java regex

我想在Java中使用下一个标准制作正则表达式:

  • 长度:正好10个字符。不多也不少。
  • 可以接受A-Z(仅大写字母)和数字0-9之间的任何字符。
  • 任何位置都只能接受一个短划线字符' - '。它不能接受任何其他字符,严格来说只有一个破折号。

实施例

  • ABCD-12345
  • F-01234GHK
  • 09-PL89GG5
  • LJ8U9N3-Y2
  • PLN86D4V-1

我一直在尝试使用我自己的发明的正则表达式,一些接近我想要的结果的正则表达式,但没有成功。

我是否必须合并两个正则表达式?

请帮助我摆脱这个问题....并提前感谢!!!

2 个答案:

答案 0 :(得分:4)

我认为你需要前瞻(这是一种结合两种正则表达式的方式)。

^(?!.*-.*-)[A-Z0-9-]{10}$

第二部分将匹配10个字符,即A-Z,0-9或破折号;第一部分是否定先行,它将拒绝其中包含两个破折号的模式。

答案 1 :(得分:2)

您可以使用:

^(?![^-]*+-[^-]*+-)[A-Z0-9-]{10}$

注意:如果您使用matches方法,则可以移除锚点。