2014-10-08 60 views
0

哪些錯誤有:請告訴我錯在正則表達式

$pattern = '/9[0-5[7-9]]{1}[\\d]{10})|([0-2]\\d{11}/'; 
$subject = '971093342689'; 

試圖在PHP

preg_match($pattern, $subject) 

檢查收到一個錯誤:

preg_match(): Compilation failed: unmatched parentheses at offset 22 
+0

[This](http://regex101.com/)是一個偉大的網站測試正則表達式,也許它會一起來。 – Alternatex 2014-10-08 13:29:39

+1

你先有一個)然後一個(。你的()[括號]不正確 – 2014-10-08 13:32:20

回答

1

兩個括號未閉合:

$pattern = '/9[0-5[7-9]]{1}[\\d]{10})|([0-2]\\d{11}/'; 

            ^^^^ 

如果是你需要的標誌,你必須逃避它。否則你需要在你的正則表達式中打開和關閉括號。

1

正如其他人所說,括號沒有關閉。我的猜測是你應該刪除它們,因爲它們後面沒有量詞(*,+,?或{}),並且沒有$ matches參數,所以你對捕獲組不感興趣。

此外,我不認爲[0-5 [7-9]]會做你認爲它的作用:這意味着:任何字符0到5,[,7到9或]。你可能想[0-57-9],這意味着:任何字符0到5或7到9