正则表达式允许数字和中间只有一个连字符

时间:2012-08-23 10:39:58

标签: php regex

我正在尝试编写一个正则表达式来允许数字,并且只有一个在中间爆发(不能在开始或结束时) 说模式:02-0402是可以接受的 模式:----0204-02-04-06是不可接受的

我试过这样的事情,但是这会允许 - 在开始时也允许多个 -

'/^[0-9 \-]+$/'

我对正则表达式不太好,所以一点点解释会真正有用。

  

编辑:很抱歉再次向您提出错误但我需要的数字只有2位数(123-346)才算无效。

3 个答案:

答案 0 :(得分:13)

试试这个:

/^\d{1,2}(-\d{1,2})?$/

一个或两个数字,后跟可选的(连字符后跟一个或两个数字)

答案 1 :(得分:5)

相当容易:

^\d+(-\d+)?$

至少有一个(+)数字(\d),后跟一个包含连字符 - 减号(-)的可选组,然后再重复一个数字。

答案 2 :(得分:2)

对于仅包含该模式的字符串,以下内容应该有效

^(\d{2}-)?\d{2}$

一组2位数后跟负号结尾,一组2位数字,不带减号。