正则表达式创建数字号码匹配器

前端之家收集整理的这篇文章主要介绍了正则表达式创建数字号码匹配器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

构成一个正则表达式来识别下面格式的电话号码数字:(nnn)nnn-nnnn。
第一步:匹配上面格式的正则表达可以这样构成:(\d{3})\s\d{3}-\d{4};其中\d单字符类型用来匹配从0到9的任何数字,另外{3}重复符号,是个简便的记号,用来表示有3个连续的数字位,也等效于(\d\d\d)。\s也另外一个比较有用的单字符类型,用来匹配空格,比如Space键,tab键和换行符这些空白字符。
第二步:将上面表达式转换成java程序正则表达式还需要对一些字符转义步奏。对java的解释器来说,在反斜线字符()后的字符有特殊的含义。转义后的正则表达式是:\\(\\d{3}\\)\\s\\d{3}-\\d{4}
因为括号在正则表达式里面是起着将一个正则表达式分组的功能,所以括号也需要转义
第三步;如果在电话号码的开头,即区位号和本地号码之间可能会有空格。我们也可匹配这些情况,则通过在正则表达式中加入(\\s*)?来实现,其中*元字符表示在模式可能有0或多个空格符,?符号表示也可能没有这些空白字符。区位号也可能有括号或者没括号,(\\(\\d{3}\\)|\\d{3})这个规则相比原来对区位号匹配增加了对没括号的匹配 \\d{3} 中间用|符号链接起来表示或的意思。所以适应性更好
第四步:本地号码的前三位和后四位之间可能没有连接符,只是有空格符或者什么符号都没有。为了匹配这三种情况,将原来的-符号改成(-|\\s*)? 描述的是他们之间的间隔可能是用-连接符链接的,或者是空白字符分割,或者这些都没有。
第五步:形成最后的正则表达式是如下形式:对(nnn)nnn-nnnn,或者nnn nnn-nnnn这种形式的号码可以识别。
(\\(\\d{3}\\)|\\d{3})(\\s*)?\\d{3}(-|\\s*)?\\d{4}

测试代码

import java.util.regex.Matcher;
import java.util.regex.Pattern;
    System.out.println(Pattern.matches("(\\(\\d{3}\\)|\\d{3})(\\s*)?\\d{4}(-|\\s*)?\\d{3}","(020)5278 886")); // (nnn) nnnn-nnn形式号码
        System.out.println(Pattern.matches("(\\(\\d{3}\\)|\\d{3})(\\s*)?\\d{3}(-|\\s*)?\\d{4}","(020)527 8886")); // (nnn) nnnn-nnn形式号码

猜你在找的正则表达式相关文章