正则表达式,用于2位数之间的连字符

时间:2014-05-31 08:26:51

标签: java regex

我想确保模式仅匹配以下输入:

  • 123(数字)
  • 123-89(或一个数字后跟一个连字符和一个数字,只有2个数字之间的连字符)

我尝试了模式((\\d)+(-)?(\\d)*)

但是,它确实匹配41-之类的输入。我想避免输入:-41(以连字符开头)或以连字符结束41-

4 个答案:

答案 0 :(得分:0)

试用(\d+)(?:-(\d+))?

我在regexpal中尝试了此操作,它符合您的输入。

答案 1 :(得分:0)

这应该可以用Java语法:

\\d++(?:-\\d++)?

第一部分\\d++占有率地抓住起始数字。至少需要。

第二部分(?:-\\d++)是一个非捕获组,匹配-后跟一个或多个数字。再次,占有欲。 ?使整个群组可选。

答案 2 :(得分:0)

我只是用|

分开了2个案例
((\d+)|(\d+-\d+))

答案 3 :(得分:0)

我只发布此内容,因为其他答案都超过了所需的时间。试试这个:

\\d+(-\\d+)?