正则表达式教程

2016-10-31  本文已影响67人  2MuchT

前言

如果你从事服务端的开发,相比你一定听说过正则表达式,最常见的应该就是对要提交表单的字段进行正确性判断。比如注册的时候检测手机号位数和号段是否正确等,如下图:

位数检测 号段检测

上述功能都是通过正则表达式来实现的,只要短短的一行表达式,而不用if...else if...if...else...一大堆逻辑判断的代码。

正则表达式的作用不只如此,本文会详细介绍的...


简介

正则表达式(Regular Expression)是一种文本模式,使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。

似曾相识?

在日常使用计算机的时候,你可能会遇到一些类似于正则表达式的搜索技巧,比如通配符?和*来查找你硬盘上的文件。比如,搜索config?.dat你可能会搜到这样的结果

   config1.dat
   config2.dat
   config3.dat

而使用config*.dat来搜过的话你会送到类似这样的文件:

  configa.dat
  configapple.dat
  configserver.dat

(⊙v⊙)嗯~就是这种感觉,短短的几个神秘字符,就能起到很神奇的作用

** 注意:但是上面?和*的语法不是真正的正则的语法,只是类似而已 **

稍微搜了一下正则君的身世,发现还不得了呢(@ο@)

发展历史
正则表达式的"祖先"可以一直上溯至对人类神经系统如何工作的早期研究。Warren McCulloch 和 Walter Pitts 这两位神经生理学家研究出一种数学方式来描述这些神经网络。
1956 年, 一位叫 Stephen Kleene 的数学家在 McCulloch 和 Pitts 早期工作的基础上,发表了一篇标题为"神经网事件的表示法"的论文,引入了正则表达式的概念。正则表达式就是用来描述他称为"正则集的代数"的表达式,因此采用"正则表达式"这个术语。
随后,发现可以将这一工作应用于使用 Ken Thompson 的计算搜索算法的一些早期研究,Ken Thompson 是 Unix 的主要发明人。正则表达式的第一个实用应用程序就是 Unix 中的 qed 编辑器。
如他们所说,剩下的就是众所周知的历史了。从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分。

看了正则君的身世,是不是觉得他挺酷的~嗯确实,但是他可不是看脸吃饭的(长得挺吓人的...),他的常见外貌是这个样子的:
^.+@.+\\..+$
上面这一小坨符号就是正则君,不要怀疑是你的浏览器乱码!没错!正则表达式长得就是这个样子!

好吧,虽然长得吓人,但是它会很有用的,而且会写正则表达式还是个很装X的事情呢~呵呵


正则表达式 - 语法

正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

上面的这段话的意思主要有三点
1.正则是一种字符模式(特定组合)的表达式
2.正则有两种字符

3.正则是几中类型字符组合的一种** 模板 **

** 对啦,总之正则就是一个模板 **

除了上述两种字符之外,我们还需要了解“限定符”、“定位符”等更具有逻辑意义的字符,以便施展正则判断的魔力

普通字符

普通字符分为可打印字符和非打印字符。可打印字符比较好理解,非打印字符是很么呢?看了下面这张表你就明白啦。比较常见的就是“/n"换行字符啦

非打印字符

特殊字符(元字符)

特殊字符,就是那些没有直观意思的字符,或者说他有着特殊的意义,例如.txt"中的,是表示任何字符串的意思。
许多元字符要求在试图匹配它们时特别对待。若要匹配这些特殊字符,必须首先使字符"转义",即,将反斜杠字符 () 放在它们前面。下表列出了正则表达式中的特殊字符:

特殊字符表

限定符

限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有*或+或?或{n}或{n,}或{n,m}共6种。
正则表达式的限定符有:

*** 待续.... ***

上一篇下一篇

猜你喜欢

热点阅读