2014-03-03 83 views
1

我需要用下面的正則表達式的幫助:正則表達式不工作的expcted

(0 ?)([1-8] ?){1}(\d ?){9}|(\d ?){10} 
  • 正則表達式應該匹配或者或11位
  • 第一位應爲0
  • 第二位數字應該包含從1 - 8位數字 only
  • 所有數字可以在之間有空格,例如, 0 1 2 7 4 3 3 3 4 4 4
  • 數字可以沒有空格,例如01274333444

我創建的正則表達式適用於除第三個條件之外的大多數場景,即第二個數字只能包含1-8個數字。 任何幫助非常感謝

+0

您的正則表達式匹配11或12位數字。 – devnull

+0

有一個非常酷的在線工具來測試正則表達式:http://regex101.com/你可能想試試看。您可以輸入數字並查看它們何時匹配。它也解釋了你正在選擇的東西。 – helderdarocha

回答

0

試試這個:

^(0\s?)([1-8]\s?)(\d\s?){8,9}$ 
+0

感謝這個作品像一個魅力:) – ConfusedCoder

1

您可以使用此:

^0 ?[1-8] ?(?:[0-9] ?){8,9}$ 

我用錨^$,以確保沒有開頭或結尾的數字。

2

這是你的正則表達式(0 ?)([1-8] ?){1}(\d ?){9}|(\d ?){10}目前正在做什麼:

Regular expression visualization

它也試圖匹配11個或12位數字,而不是10或11

你需要做的是改變它以下方法之一:

  • 添加組的OR |周圍,以限制它的範圍:(0 ?)([1-8] ?){1}(?:(\d ?){8}|(\d ?){9})

Regular expression visualization

  • 或優選將其更改爲8或9的字符匹配:(0 ?)([1-8] ?){1}(\d ?){8,9}

Regular expression visualization

+0

非常感謝你這是非常好的解釋。我無法在這個階段投票,否則會投你的答案:) – ConfusedCoder