我需要一个正则表达式来匹配以下格式的ID
123
要么
123-45
在连字符之后可以通过任意数量的数字。现在的问题是我的表达式匹配123-
而我也不需要它(连字符是可选的,但是如果它存在则必须至少有一个数字)。
我试过了
^\d+[-\d+]?
和^\d+[-\d]?\d*
,但都不起作用。
答案 0 :(得分:9)
尝试类似:
^\d+(?:-\d+)?$
您希望-
可选,至少包含一位数字。 [-\d]
允许连字符或一个数字,后跟零数字。 ^\d+(?:-\d)?\d*$
中的类似模式。
另见:
(...)
和(?:...)
- 允许对量词进行分组,例如?
。[...]
- 允许从一组中选择一个字符。答案 1 :(得分:2)
这应该这样做:
\d+(?:-\d+)?
答案 2 :(得分:1)
正如Kobi所说 - 你几乎把它弄好了,你只是将方形与圆括号混合
答案 3 :(得分:0)
怎么样:\ d + - ?
匹配所有数字和可选的连字符
答案 4 :(得分:0)
尝试:
^\d+[-\d]?\d+
用*
替换+
强制它匹配前面一个或多个元素,而不是零或更多。