2012-11-21 41 views
0

我找不到任何類似於此的問題,所以在這裏。RegExp只允許不包含一組前綴的字符串

我需要一個正則表達式來驗證電話號碼。所以首先,只有數字,破折號和'+'是允許的。

困難的部分是僅允許與任何來自下列字符串的開始表達:

50 
51 
53 
57 
60 
66 
69 
72 
73 
78 
79 
88 

任何其他的號碼沒有那些前綴不應該被允許。

我會非常感謝任何提示!謝謝!

+2

正則表達式在不同的程序中有所不同。 grep和sed有它自己的正則表達式,python有它自己的,perl有它自己的,等等。你正在使用哪種編程語言? – werehuman

+0

我很抱歉,我沒有意識到這一點。我需要這個表達式用於.NET WebForms 3.5驗證控件。 – barjed

回答

4

的前綴部分是相當簡單的。 ^是一個錨,表示字符串的開始。然後,只需添加您所需的圖案(我相信你想允許加的第一個字符):

^\+?(?:50|51|53|57|60|66|69|72|73|78|79|88)[\d-]+$ 

注意,$是對口^,並確保您的字符串不包含非數字非電話號碼後面的短劃線字符。

當然,最後的模式可以做得更具體,以禁止連續的破折號等等。

另請注意,.NET中的\d與任何Unicode數字字符匹配。如果這不是你想要的,請使用[0-9-]

1

你需要調整這一點,但這裏是一個開始:

^(50|51|53|57|60|66|69|72|73|78|79|88)\d+$ 
            ^
             | 
             -----This part probably needs 
              more constraints, depending on 
              your format 
相關問題