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

Fir*_*iew 3 java regex

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

规则是:

字符串可以,

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

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

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

例如,

有效期:

10-20
10-20-3
10-20,3 
Run Code Online (Sandbox Code Playgroud)

InValid:

10
-10
,10
10-20,
10-20-
10,20
Run Code Online (Sandbox Code Playgroud)

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

[0-9,-]+ 
Run Code Online (Sandbox Code Playgroud)

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

das*_*ght 9

试试这个表达式:

[0-9][0-9,-]*-[0-9,-]*[0-9]
Run Code Online (Sandbox Code Playgroud)

这意味着字符串必须:

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