正则表达式验证以下方案的手机号码?

时间:2012-12-05 09:46:47

标签: c# .net regex

  

可能重复:
  Regular Expression for validating numbers with one space and one optional special character

我必须编写一个正则表达式来验证手机号码,如下所示:

a)。最多12个字符

b)。将允许一个空格(在一个未定义的点)

c)。必须从0

开始

d)。可选的分机号码最多为五位数字,不包括#符号

我已尝试使用以下内容获取0-12个数字。但我不知道如何添加可选的分机号码部分(#和后跟数字)

^(0(?:\d{0,11}|(?=\d* \d*$)[\d ]{0,12}))$ 

2 个答案:

答案 0 :(得分:1)

您需要为每种格式创建正则表达式。然后,您可以使用交替构造|将它们组合成单个正则表达式。

第一个模式是最棘手的一个,但是你提供了一种方法来解决它,你自己使用零宽度正向前瞻断言(这里我假设空间只允许 数字之间) :

(?=\d+ \d+#)[\d ]{12}#\d{5}

下一个模式很简单:

\d{11}

你对最后一个模式的定义有点模糊,但我做了各种假设我选择了这种模式:

\d{1,12}#\d{1,5}

然后是合并的正则表达式:

^(?=\d+ \d+#)[\d ]{12}#\d{5}|\d{11}|\d{1,12}#\d{1,5}$

答案 1 :(得分:0)

试试这个正则表达式。它将满足a,b,c和d条件

(?<=^)([\d\s]{13}|\d{12}|0\d{11}|\d{5})(?=$)