正则表达式创建数字号码匹配器
2016-06-14 16:12
357 查看
构成一个正则表达式来识别下面格式的电话号码数字:(nnn)nnn-nnnn。
第一步:匹配上面格式的正则表达可以这样构成:(\d{3})\s\d{3}-\d{4};其中\d单字符类型用来匹配从0到9的任何数字,另外{3}重复符号,是个简便的记号,用来表示有3个连续的数字位,也等效于(\d\d\d)。\s也另外一个比较有用的单字符类型,用来匹配空格,比如Space键,tab键和换行符这些空白字符。
第二步:将上面表达式转换成java程序正则表达式还需要对一些字符转义步奏。对java的解释器来说,在反斜线字符()后的字符有特殊的含义。转义后的正则表达式是:
因为括号在正则表达式里面是起着将一个正则表达式分组的功能,所以括号也需要转义
第三步;如果在电话号码的开头,即区位号和本地号码之间可能会有空格。我们也可匹配这些情况,则通过在正则表达式中加入
第四步:本地号码的前三位和后四位之间可能没有连接符,只是有空格符或者什么符号都没有。为了匹配这三种情况,将原来的-符号改成
第五步:形成最后的正则表达式是如下形式:对(nnn)nnn-nnnn,或者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形式号码
相关文章推荐
- Android Debug Bridge(ADB)的用法
- 怎么做一个网页的播放器
- 1.1 安装CoffeeScript(1)
- opencv算法简化移植
- 全面理解java中的异常处理机制
- runtime 系列-2获取类的所有特征(属性,实例变量,方法)
- C++虚基类构造函数
- 学习资源---链接
- synchronized详解
- Operating System Point
- linux常用命令加实例大全
- 一条慢SQL引发的血案
- Dao操作的抽取, BaseDao
- Python使用dis模块把Python反编译为字节码的用法详解
- 一个关于USB Interface的例子
- 14、产生MySQL主从同步延迟的问题及解决方案
- 超强、超详细Redis数据库入门教程[atco整理]
- Goolge 官方发布的SwipRefreshLayout下拉刷新,格外添加上拉加载功能
- mxnet目录结构
- php的socket通信