1

我想接受0-9 ,-

所以我有:

[0-9-,]+

但是我只希望-连续有一个,所以你不能拥有--. 我怎样才能做到这一点?

4

3 回答 3

2

使用前瞻断言

(?!.*--)[0-9,-]+

此外,您可能需要使用锚点来确保匹配整个字符串:

^(?!.*--)[0-9,-]+$
于 2013-02-13T12:00:34.087 回答
2

我认为需要一个是这样的:

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

这是做什么的:

\d+任何整数(一位或多位)

(-\d+)?可选部分匹配 a-后跟一个整数

(,\d+(-\d+)?)*a 出现零次或多次,,然后是上述模式的组合。

注意:添加所需的转义\

于 2013-02-13T12:22:33.333 回答
0

这个可以吗 ?

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

刚刚用 grep 做了一个小测试:

kent$  echo "1-234-
1234-
3-24442-34
12341234"|grep -E '^[0-9,]*-?[0-9,]*$'
1234-
12341234
于 2013-02-13T12:24:58.497 回答