我有一个带数字和分隔符的字符串。
数字可以由comma
或hyphen
分隔。但是,可能永远不会有两个数字都用连字符分隔,而中间没有逗号。
示例:
有效:123,12,2,1-3,1,1-3,1
无效:123,12,2,1-3,1,1-3-5,1
我有一个几乎有效的正则表达式,除了它没有检测到那些1-3-5
个无效行。
如何改进以下内容?
^([0-9])+((,|-)[0-9]+)*$
答案 0 :(得分:2)
答案 1 :(得分:1)
您可以分解输入:
正常情况的正则表达式可写为\d+(?:-\d+)?
;对于特殊情况,这只是,
。
应用normal* (special normal*)*
模式,添加锚点和量词,我们有:
^\d+(?:-\d+)?(,\d+(?:-\d+)?)*$
答案 2 :(得分:1)
您可以使用环视添加条件,这将搜索-digits-
,因此您的正则表达式可能如下所示:
^(?!.*-\\d+-)[0-9]+([,-][0-9]+)*$
^^^^^^^^^^^^-negative look-ahead, match will fail if there is any -digits- in your string