加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 04:22:59 所属栏目:百科 来源:网络整理
导读:构成一个正则表达式来识别下面格式的电话号码数字:(nnn)nnn-nnnn。 第一步:匹配上面格式的正则表达可以这样构成:(d{3})sd{3}-d{4};其中d单字符类型用来匹配从0到9的任何数字,另外{3}重复符号,是个简便的记号,用来表示有3个连续的数字位,也等效于(

构成一个正则表达式来识别下面格式的电话号码数字:(nnn)nnn-nnnn。
第一步:匹配上面格式的正则表达可以这样构成:(d{3})sd{3}-d{4};其中d单字符类型用来匹配从0到9的任何数字,另外{3}重复符号,是个简便的记号,用来表示有3个连续的数字位,也等效于(ddd)。s也另外一个比较有用的单字符类型,用来匹配空格,比如Space键,tab键和换行符这些空白字符。
第二步:将上面表达式转换成java程序正则表达式还需要对一些字符转义步奏。对java的解释器来说,在反斜线字符()后的字符有特殊的含义。转义后的正则表达式是:(d{3})sd{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形式号码

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读