如何修复我的正则表达式^ \ d + [ - \ d]?\ d *以匹配123-45而不是123-?

时间:2011-06-10 21:44:16

标签: c# .net asp.net regex

我需要一个正则表达式来匹配以下格式的ID

123 要么 123-45

在连字符之后可以通过任意数量的数字。现在的问题是我的表达式匹配123-而我也不需要它(连字符是可选的,但是如果它存在则必须至少有一个数字)。

我试过了 ^\d+[-\d+]?^\d+[-\d]?\d*,但都不起作用。

5 个答案:

答案 0 :(得分:9)

尝试类似:

^\d+(?:-\d+)?$

您希望-可选,至少包含一位数字。 [-\d]允许连字符一个数字,后跟零数字。 ^\d+(?:-\d)?\d*$中的类似模式。

另见:

答案 1 :(得分:2)

这应该这样做:

\d+(?:-\d+)?

答案 2 :(得分:1)

正如Kobi所说 - 你几乎把它弄好了,你只是将方形与圆括号混合

答案 3 :(得分:0)

怎么样:\ d + - ?

匹配所有数字和可选的连字符

答案 4 :(得分:0)

尝试:

 ^\d+[-\d]?\d+

*替换+强制它匹配前面一个或多个元素,而不是零或更多。