我需要一个正则表达式来匹配以下格式的ID
123
或者
123-45
连字符前后可以有任意数量的数字。现在的问题是我的表达式匹配 123-
而我不需要它(连字符是可选的,但如果它存在,那么它后面必须至少有一个数字)。
我试过了
^\d+[-\d+]?
和 ^\d+[-\d]?\d*
,但都不起作用。
最佳答案
尝试这样的事情:
^\d+(?:-\d+)?$
你希望 -
至少有一个数字是可选的。 [-\d]
允许一个连字符 或 一个数字,后跟零数字。 ^\d+(?:-\d)?\d*$
中的类似模式。
另见:
- Capturing and non-capturing groups -
(...)
和(?:...)
- 允许对量词进行分组,例如?
。 - Character classes -
[...]
- 允许从集合中选择单个字符。
关于c# - 如何修复我的正则表达式 ^\d+[-\d]?\d* 以匹配 123-45 而不是 123-?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6312381/