我需要一个数字,空格和特殊字符的正则表达式

时间:2016-08-03 05:47:10

标签: regex

我需要一个数字,空格和特殊字符的正则表达式。以下是我的例子:

+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

2 个答案:

答案 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}