小结正则表达式

我觉得正则表达式在字符串查找界中绝对算的上是‘鬼斧神工’,它犀利的地方就是其无与伦比的匹配奇效,会为你节省太多的开发时间,而另一面就是一种你自己写完过后,再过几天回头看来心里绝对会想:“我当时写的这一串东西是什么鬼?!”特别是对于我这种不是经常写正则的人。所以今天把这个知识点的书写流程归纳一下,以备不时之需,另外,文章里面涉及的图片均来自于慕课网的正则教程。

首先在书写正则表达式之前,无论简单复杂与否,第一步就是立马把界定符(表示一个正则的开始和结束)写上,增加自信,找找感觉,呵呵!

接着就要明确的是这被查找字符串的属于哪一类元素,是可见原子还是不可见原子?或者说更复杂一点的是这两者的混合体。

再者,大的类别确定了之后(比如它是属于可见原子),我们再来看如何把他们筛选出来,可以通过下图的方式将其筛选出来:

Alt text

而对于上面的筛选方式,我们还可以有更简便一点的写法简化正则,比如筛选阿拉伯数字,按上面的写法就是[0-9],那么对应的简便写法就是\d,基于此下图还给出了其他对应的简单写法:

Alt text

到这里我们已经把要替换的元素给筛选出来了,接下来的一步就是要确定我们准备要几个这些个元素,即元素数量的确定。那么下图给出了量词的写法:

Alt text

紧接着我们有时候需要对替换的字符串进行严格的开始和结尾控制,即必须以某某规则开头,我们可以使用如下图的方式进行控制:

Alt text

对于上图的()符号有点像代数里面的因式分解一样(是不是可以这样类比,额,我也忘了?)就好理解了。进行到这,大概正则的书写就到此为止了。不过对于有些地方的正则需要再精确一点,我们可以使用如下的修正模式(名字取的怪怪的~),如图:

Alt text

提一句这些修正模式的符号都写在最后一个界定符后面。最后,再列举几个常见的正则表达式:

1.手机

/1[34578]\d{9}/

2.邮箱

/^\w+@[a-z0-9]+.[a-z]+$/ i

3.身份证

/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;

4.URL

/^(https?://)?(\w+.)+[a-zA-Z]+$/