正则表达式匹配连字符和逗号,仅在中间

时间:2012-08-12 02:58:27

标签: java regex

我正在使用正则表达式检查字符串。

规则是:

字符串可以,

包含任何数字,连字符和逗号

连字符和逗号应该只在数字之间。它不应该在字符串的开头或结尾。

逗号是可选的。连字符是强制性的

例如,

有效:

10-20
10-20-3
10-20,3 

InValid:

10
-10
,10
10-20,
10-20-
10,20

到目前为止我尝试过的代码:

[0-9,-]+ 

有人可以建议如何检查昏迷和连字符不应该在字符串的开头或结尾以及上述条件吗?

3 个答案:

答案 0 :(得分:8)

试试这个表达式:

[0-9][0-9,-]*-[0-9,-]*[0-9]

这意味着字符串必须:

  • 以数字开头和结尾
  • 中间至少包含一个短划线
  • 在第一个数字之后和短划线之前,有零个或多个[0-9,-]个字符
  • 短划线和最后一位数之间的
  • 零个或多个[0-9,-]个字符

答案 1 :(得分:1)

你应该试试这个

[0-9][0-9,\-]*-[0-9,\-]*[0-9]

我认为连字符需要在字符类

中反映

答案 2 :(得分:0)

表达式应在开头包含^\A,在结尾包含$\z,否则表达式也会匹配无效字符串,如:

,10
20-
-34

因此表达式应为:

^[0-9][0-9,-]*-[0-9,-]*[0-9]$