2017-05-25 59 views
1

我正在尋找一個正則表達式來接受只有這個數字沒有任何其他格式。正則表達式只允許這種格式123-456-7890

123-456-7890 

我試過這個,但也接受差異格式。

Regex regexPhoneNumber = new Regex(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$"); 
+2

\ d {3} - \ d {3} - \ d {4}'有什麼問題? – ndn

+0

它看起來像.NET,所以最好避免'\ d'。 –

+0

@WiktorStribiżew,我不知道.NET和'\ d's有問題。你能分享一下嗎? – ndn

回答

1

您可以使用

Regex regexPhoneNumber = new Regex(@"\A[0-9]{3}-[0-9]{3}-[0-9]{4}\z"); 

將接受3個數字開頭的字符串,然後有-,然後3位數字,-,然後4位數字與字符串的位置盡頭。

詳細

  • \A - 字符串的開始
  • [0-9]{3} - 3 ASCII數字
  • - - 一個連字符
  • [0-9]{3} - 3位數
  • - - 又一個連字符
  • [0-9]{4} - 4位數字
  • \z - 字符串的最後一個字符(最終的換行符不能跟隨,如$ anchor的情況)。

請注意,如果你想使用\d而不是[0-9]縮短模式,仍然匹配ASCII只有數字,傳遞RegexOptions.ECMAScript選項的正則表達式對象。