我需要一个数字,空格和特殊字符的正则表达式。以下是我的例子:
+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 :(得分:2)
试试这个:
^[0-9 ()\+\-]+$
[]表示此集合中的项目。
结尾处的+表示其中的一个或多个。
0-9表示此范围内的数字。
空间意味着空间角色。
(和)表示括号字符
+和 - 表示加号和减号。
开头的^和结尾的$表示这是从头到尾的完整陈述,其间没有其他内容。
我认为这涵盖了你的整套
答案 1 :(得分: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]+$)/
如果您需要特定的数字长度,请更改{number}的“+”,例如4个字符的长度{4}
[0-9]{4}