正则表达式教程

前言

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

位数检测
号段检测

上述功能都是通过正则表达式来实现的,只要短短的一行表达式,而不用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.正则有两种字符

  • 普通字符(a-z)
  • 特殊字符(元字符)

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

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

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

普通字符

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

非打印字符

特殊字符(元字符)

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

特殊字符表

限定符

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,881评论 4 368
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,052评论 1 301
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,598评论 0 250
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,407评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,823评论 3 294
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,872评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,037评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,778评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,505评论 1 247
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,745评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,233评论 1 264
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,568评论 3 260
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,231评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,141评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,939评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,954评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,784评论 2 275

推荐阅读更多精彩内容

  • 注:本篇文章只为方便查看,特此保留,如有冒犯,敬请谅解!!! 本文目标 30分钟内让你明白正则表达式是什么,并对它...
    阿杰Alex阅读 1,449评论 0 10
  • 正则表达式到底是什么东西?字符是计算机软件处理文字时最基本的单位,可能是字母,数字,标点符号,空格,换行符,汉字等...
    狮子挽歌阅读 2,105评论 0 9
  • 目录 第一章 正则表达式字符匹配攻略 第二章 正则表达式位置匹配攻略 第三章 正则表达式括号的作用 第四章 正则表...
    Albert_w3阅读 429评论 0 2
  • 将情怀种植在心间 这一场美丽的邂逅 纵然只是一个梦境 也足以令你陶然惊喜 随意或者经意 有情或者无情 这里的某个瞬...
    梦双眸阅读 193评论 2 12
  • Nginx 与 Apache 的比较 Apache 稳定、开源、跨平台,但它太重。在 Apache 服务器上,如果...
    15d843cd48a8阅读 1,282评论 0 0