可能重复:
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}))$
答案 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})(?=$)