Shell扩展正则表达式练习1——电话号码过滤

Shell扩展正则表达式练习1——电话号码过滤

国内电话号码目前一般采用区号+7位或8位阿拉伯数字组成,为了尽可能达到练习的目的,自己添加一些规则:

①3位区号:如北京010,上海021,西安029,这里有个例外就是026并未分配,需要做排除处理。②4位区号必须以0开头。③7位或8位电话号码首位必不能为0,。
电话号码常见书写格式自行定义如下几类,如:
  0934—12345678
  093412345678
(0934)空格12345678
(0934)—12345678

1. 先对最左边括号做模式匹配,区号有带“()”也有不带“()”的情况,可用“^\(?”,因为“(”为特殊字符,所以需要用“\”进行转义。
2. 匹配区号
	[0]([1][0]|[2]([^6])|[1-9]{3})\)?
	其间使用或表达和表达式分组以及区间和排除性字符“^6”(排除026)等。最后同样需要“\”对“)”进行转义。“[1][0]|[2]([^6])|[1-9]{3}”匹配北京010和02X以及0XXX(4位区号)的情况。
3. 匹配“——”或空格或无符号使用管道 (—|空格|)
4. 匹配7或8位电话号码,使用间隔。
	[1-9][[:digit:]]{6,7}
	[1-9]过滤掉首位为0的情况。为啥这里不能用[^0]呢?有没有认真想一想?因为单纯只排除0外,还有很多其他字符,可不能保证一定就是数字了。

加入锚字符,完整模式如下:

‘/^(?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值