2011-09-19 110 views
4

我在審查應用程序和記錄的C#代碼。在閱讀代碼時,我看到了美國電話號碼的不尋常的正則表達式。正則表達式是下面電話號碼正則表達式

@"^[01]?[- .]?(\([2-9]\d{2}\)|[2-9]\d{2})[- .]?\d{3}[- .]?\d{4}$"; 

我從上述電話號碼的結論是像01.(29).123.4567或01-38-111-1111。

上午我解釋是否正確?任何有關正則表達式的見解都將受到高度讚賞以上正則表達式的例子可以幫助我更多地瞭解正則表達式。

回答

11

讀從左到右...

  • ^[01]?可能開始與01
  • [- .]?五月可能應遵循的-空間.
  • (([2-9]\d{2})|[2-9]\d{2})必須29之間的數字開始,然後後跟任意兩位數字。 (這奇怪地重複了兩次,並且捕獲組應該總是包含相同的部分,很奇怪)。這可能意味着擺脫了括號,這會更有意義。通常,您使用\字符進行轉義。
  • [- .]?五月可能應遵循的-空間.
  • \d{3}必須跟隨任意三位數。
  • [- .]?五月可能應遵循的-空間.
  • \d{4}$必須遵循(和結束)與任何四個數字。
+0

我正要做同樣的事情。爲我保留了一些打字。 +1給你。我認爲「不匹配」的parens應該是逃跑的,產生(29)或者29,或者使用數字2-9的任何2位數字。更清晰,我認爲這意味着(\([2-9] \ d {2} \)| [2-9] \ d {2}) – Kibbee

+0

^[01]?這意味着它可以從一個空間開始? – MStp

+0

@AdnanBhatti:錯誤的複製和粘貼。我責怪OP缺乏代碼格式。 – alex

0

^[01]? = 0或1或全無

[ - ]? = - 或。或沒有

(([2-9] \ d {2})=第一數量大於或等於2,接着2位數字,其可以是任何數目的B/W 0到9 ..裝置012或112兩者將正常工作

| =或簽名

[2-9] \ d {2})=第一數量的b/W 2和圖9,接着2號的b/W 0-9

[ - 。] ? =意味着 - 或。或者沒有

\ d {4} =任意四位數字組成的B/W 0-9

$ =它確保用正則表達式是什麼$號之前結束。 ^與$做同樣的事情,但它只檢查正則表達式的開始。