2011-06-10 62 views
3

我需要一個正則表達式以下列格式匹配的ID如何修復我的正則表達式^ d + [ - d]? d *以匹配123-45但不是123-?

123123-45

有可以由一個連字符後的數字之前的任何量。現在的問題是,我的表達匹配123-,我不需要它(連字符是可選的,但如果它存在,那麼必須至少有一個數字後面)。

我試過 ^\d+[-\d+]?^\d+[-\d]?\d*,但都沒有工作。

+1

@Dunnie - 這幾乎不是「不必要的標籤」 - 事實上,我們總是要求人們*添加*這些標籤!這與正則表達式是使用.Net引擎還是在Asp.Net中用於驗證有關。 – Kobi 2011-06-10 21:58:51

回答

9

嘗試類似:

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

你想擁有-可選的至少一個單一的數字。 [-\d]允許連字符一個數字,後跟零個數字。 ^\d+(?:-\d)?\d*$中的類似模式。

參見:

0

怎麼樣:\ d + - ?

匹配所有數字和可選的連字符

2

這應做到:

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

作爲了Kobi說 - 你幾乎擁有它的權利,你只是混合起來的方形與圓形支架

0

嘗試:

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

與0123更換強制它匹配一個或多個前面的元素,而不是零個或多個元素。

相關問題