我学正则表达式(1)

前端之家收集整理的这篇文章主要介绍了我学正则表达式(1)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在做了一些文字处理工作后,觉得正则表达式真的是有通天的神力,熟练掌握后,顿觉手握倚天剑,心有九阳真经,脚踏风火轮,可以肆意地在文字的丛林里披荆斩棘。下面,我们就来看看基本的正则表达式的用法

基本的正则表达式

刚刚碰到正则表达式的时候,我碰到了一个小任务,就是抽取上海公司网页中的电话号码,比如 021-34206500
我翻了翻书,了解了[]和-的用法后,高兴地用了这么一个正则表达式[0-9]+-[0-9]+ 完成了任务,其中[0-9]表示[0-9]中任选一个匹配,+表示后面可以重复1到N次,N代表无限。
不料,大神级别的项目组长看了这个表达式之后,说了句,“你是新手吧?”。靠,我真的很纳闷,他怎么看出来的?
最后,看了一些帖子,才发现,有人说过,菜鸟采用[0-9],大神都用\d,其中d是英语digit(数字)的第一个字母。
懂了以后,我把上面的表达式改成了 \d+-\d+,也能用。

不过,程序运行了几次后,又碰到了一个新问题,有的公司号码是这样的( 021)34206500, 有的还用了中文括号 021)34206500,这可怎么办,三种情况了?
我突然想起,貌似有个点号可以匹配全部,试了下\d+.\d+,果真又搞定了
过了段时间,项目组长把我叫了过去,说抽取的号码有问题,有的位数多了,有的位数少了,比如有的公司竟然写了个4位数的号码, (021)4588.
问题来了,怎么把这些排除掉呢,我灵机一动,发现太简单了,直接写成\d\d\d.\d\d\d\d\d\d\d\d。写完以后,我觉得这他妈的真的长的,设计正则的人真的脑残,不能搞点简便的办法吗?
话说我才刚想喷这么一句,有人从后面拍了下我肩膀,说,“你怎么这么写?让我来给你SHOW一个大招。”。说罢,他一改,\d{3}.\d{8}。
“短了那么多,能行吗?”
“试试“
一试,还真的可以。原来可以用{}里面加个数字来表示重复次数。又学一招。

小结

在本文中,我们学习了下列内容
+, 匹配1到N次重复
[0-9], 匹配数字
\d,用字符表示数字
{N},重复N次
(未完待续)
原文链接:https://www.f2er.com/regex/360074.html

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