3

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

规则是:

字符串可以,

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

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

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

例如,

有效的 :

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

无效的 :

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

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

[0-9,-]+ 

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

4

3 回答 3

9

试试这个表达式:

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

这意味着字符串必须:

  • 以数字开头和结尾
  • 中间至少包含一个破折号
  • 在第一个数字之后和破折号之前有零个或多个[0-9,-]字符
  • 在破折号和最后一个数字之间有零个或多个[0-9,-]字符
于 2012-08-12T03:01:05.237 回答
1

你应该试试这个

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

我认为连字符需要在字符类中反斜杠

于 2012-08-12T03:01:02.080 回答
0

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

,10
20-
-34

所以表达式应该是:

^[0-9][0-9,-]*-[0-9,-]*[0-9]$
于 2012-12-25T12:53:38.643 回答