2012-01-27 122 views
0

我需要位數正則表達式驗證

numeric digits grouped as X-XXXXX-XXX-X 

任何一個可以幫助正則表達式驗證?

+1

對於每個X你用[0-9]替換它,你完成了?! – 2012-01-27 17:12:14

回答

2
Regex reg = new Regex("\b[0-9]\-[0-9]{5}\-[0-9]{3}\-[0-9]\b"); 
+0

Thanx解決方案... – chamara 2012-01-27 17:26:06

0
[0-9]-[0-9]{5}-[0-9]{3}-[0-9] 

你也可以使用圓括號中提取的數字,如果你想:

([0-9])-([0-9]{5})-([0-9]{3})-([0-9]) 

,並獲得在Regex.Replace()函數$ 1 $ 2等的值

0
Regex pattern = new Regex("\b\d-\d{5}-\d{3}-\d\b"); 

\b - word boundary 
\d - digit 
1

(^\d{1}-\d{5}-\d{3}-\d{1}$),應該這樣做。

1

以下是我用於檢查社會安全號碼用戶的輸入:

Public Shared Function CheckSSNFormat(ByVal text As String) As Boolean 
    Dim digits As String = Regex.Replace(text, "[^0-9]", "") 
    Return digits.Length = 9 
End Function 

它不檢查,他們是在一個特定的格式輸入,但可能是更好的根據是什麼你真的需要 - 所以只是想我會給你另一種選擇,只是開始。

以上只是刪除數字以外的所有內容,如果有9位數字(有效的SS#),則返回true。這確實意味着一些愚蠢的用戶可能會輸入這樣的內容:hello123456789,它會接受它是有效的,但這對我來說很好,我寧願這樣做,也不願意接受123456789,因爲我只是在尋找123-45-6789 。

後來,我用它來保存到我的數據庫:

Public Shared Function FormatSSNForSaving(ByVal text As String) As String 
    If text = "" Then text = "000-00-0000" 
    Return Regex.Replace(text, "[^0-9]", "") 
End Function 

,這隻要我想顯示的值(其實我用這一個電話號碼,原來我從來沒有顯示SS#所以不要沒有它的功能):

Public Shared Function FormatPhoneForDisplay(ByVal text As String) As String 
    If text.Length <> 10 Then Return text 
    Return "(" & text.Substring(0, 3) & ") " & text.Substring(3, 3) & "-" & text.Substring(6, 4) 
End Function