用于验证13位数电话号码的正则表达式是数字,最多可包含3个空格

时间:2013-09-28 22:10:50

标签: regex phone-number

我想验证一个电话号码,该电话号码可以包含10到13位数字,并且可以包含0到3个空格(可以在数据中的任何位置)。请告诉我怎么做?

我尝试使用正则表达式^(\d*\s){0,3}\d*$但工作正常,但我需要将字符总数限制为13.

1 个答案:

答案 0 :(得分:0)

您希望将相同的文本与2种不同的整线模式匹配。

这可以通过匹配模式来实现:

$ cat file
1234567 90
1234567890
123 456 789 0123
123 456 789 01 23
$ sed -rn '/^([0-9] ?){9,12}[0-9]$/{/^([0-9]+ ){0,3}[0-9]+$/p}' file
1234567890
123 456 789 0123
$

或者如果您的正则表达式引擎(perl /“grep -P”/ java / etc)支持前瞻 - 模式可以是combined

// This is Java
Pattern p = Pattern.compile("(?=^([0-9] ?){9,12}[0-9]$)(?=^([0-9]+ ){0,3}[0-9]+$)^.*$");
System.out.println(p.matcher("1234567 90").matches());        // false
System.out.println(p.matcher("123 456 789 0123").matches());  // true
System.out.println(p.matcher("123 456 789 01 23").matches()); // false