2016-08-03 34 views
0

我需要一個數字,空格和特殊字符的正則表達式。這裏是我的例子:我需要一個數字,空格和特殊字符的正則表達式

+44 161 999 8888

011 44 (161) 999 8888

1-408-999 8888

+1 (408) 999 8888

222 8888

1-212-222 8888

+1 (212) 222 8888

+1 212 999 8888

001 (212) 999 8888

0161 999 8888

+44 (161) 999 8888

2222 8888

01-2222 8888

+44 1-2222 8888

+91-80-26584050

26584050

+0

我需要傳真號碼正則表達式,但整體國家 – Wenson

+0

這是一個大量的模式匹配。你有沒有嘗試過任何東西? –

+0

是的,我試了一個小時。我不是正則表達式的專家 – Wenson

回答

1

嘗試這種情況:

^[0-9()\+\-]+$ 

的[]意味着在這組中的項目。

末尾的+表示其中的一個或多個。

0-9表示此範圍內的數字。

空間表示空格字符。

(和)指的是括號字符

+和 - 指的是加號和減號字符。

^在開始處和$在結尾處說這是從頭到尾的完整聲明,其間沒有別的。

我覺得一個覆蓋完整的

+1

謝謝你,但我不需要字母(a-z或A-Z)。 – Wenson

+1

呃,我的正則表達式中沒有任何字母給出... – LordWilmore

+1

但是Alpha字母接受了你的正則表達式 – Wenson

1

例如在PHP中:

<?php 
$input = "+44 161 999 8888"; 

//$input = "011 44 (161) 999 8888"; 

//$input = "1-408-999 8888"; 

//$input = "+1 (408) 999 8888"; 

//$input = "222 8888"; 

//$input = "0161 999 8888"; 

//$input = "01-2222 8888"; 

//$input = "+44 1-2222 8888"; 

//$input = "+91-80-26584050"; 

//$input = "26584050"; 


preg_match("/(^\+[0-9]+\ [0-9]+\ [0-9]+\ [0-9]+$|^[0-9]+\ [0-9]+\ \([0-9]+\)\ [0-9]+\ [0-9]+$|^[0-9]+\-[0-9]+\-[0-9]+\ [0-9]+$|^\+?[0-9]+\ \([0-9]+\)\ [0-9]+\ [0-9]+$|^[0-9]+\ [0-9]+$|^[0-9]+\ [0-9]+\ [0-9]+$|^[0-9]+\-[0-9]+\ [0-9]+$|^[0-9]+\ [0-9]+\-[0-9]+\ [0-9]+$|^\+[0-9]+\-[0-9]+\-[0-9]+$|^\+[0-9]+\ [0-9]+\-[0-9]+\ [0-9]+$|^[0-9]+$)/", $input, $m); 

echo $input; 
print_r($m); 

正則表達式分隔:

/(
^\+[0-9]+\ [0-9]+\ [0-9]+\ [0-9]+$| 
^[0-9]+\ [0-9]+\ \([0-9]+\)\ [0-9]+\ [0-9]+$| 
^[0-9]+\-[0-9]+\-[0-9]+\ [0-9]+$| 
^\+?[0-9]+\ \([0-9]+\)\ [0-9]+\ [0-9]+$| 
^[0-9]+\ [0-9]+$|^[0-9]+\ [0-9]+\ [0-9]+$| 
^[0-9]+\-[0-9]+\ [0-9]+$|^[0-9]+\ [0-9]+\-[0-9]+\ [0-9]+$| 
^\+[0-9]+\-[0-9]+\-[0-9]+$| 
^\+[0-9]+\ [0-9]+\-[0-9]+\ [0-9]+$| 
^[0-9]+$)/ 

如果您需要的數量,變化的具體lengh 「+」爲{number},例如長度爲4個字符{4}

[0-9]{4} 
+1

謝謝@Zital – Wenson

相關問題