文档章节

PHP学习历程之——正则表达式

CoderAndy
 CoderAndy
发布于 2014/04/08 13:27
字数 1087
阅读 52
收藏 1

首先搞清楚3个问题:

    • 为什么要用正则表达式?

    • 什么是正则表达式?

    • 如何使用正则表达式?

正则表达式的适用场合:

       正则表达式最初起源数学领域的一些研究,1956年数学家Stephen Kleene在论文《神经网络事件的表示法》中首次提出了正则表达式的概念。数年之后,计算机领域借鉴那些研究工作的成果和思路,由UNIX的主要创始人Ken Thompson开始讲正则表达式应用于计算搜素算法,至此正则表达式从UNIX领域开始被广泛地普及开来。

       替换文本或者代码中的某些字符,最常见的方法就是使用编辑软件中的查找和替换功能,但是替换工作很大的时候,这样的做法就不足以高效的完成要求。这时候就需要借助编程来实现,这时候就使用正则表达式来完成几乎所有的文本查找和替换工作。

       正则表达式的强大功能来源于它可以指定抽象模式校验不同的字符序列,3种基本抽象模式:

    • 可出现的字符集(例如,字母、数字和下划线)

    • 可选择性的集合(例如,”com“、”net“或”org“)

    • 可重复的序列(例如,至少一个但是不多于8个的字母符号)

将这三种模式按照一定的方式组合就可以校验电子邮件的地址是否合法;校验用户输入的日期格式是否正确;校验用户输入的身份证号码格式是否正确等(当然可以用php自定义算法实现)

正则表达式的概念

       正则表达式是由一些普通的字符和一些元字符(metacharacters)共同组成的,其中普通字符包括大小写的字母和数字,而元字符具有特殊含义。

元字符

       元字符是用来描述前面的字符在匹配模式中出现的方式。元字符本身是单一的字符,但是不同或者相同的元字符组合起来可以构成大的元字符。下表中消息介绍了正则表达式中各元字符的含义:

360软件小助手截图20140408132704

方括号表达式

方括号表达式可以用来定义一个字符集和,其含义是必须匹配该集合中的任意一个字符。定义方括号表达式的方式有两种:

    • 把所有的字符列举出来。例如,[1234567890]、[abcdefg]
    • 利用字符“-”来表示字符区间。例如,[0-9]、[a-g]

注意:通常情况下,“-”字符只表示一个字符,只有在表示字符区间的时候才被用作元字符。

image

定位符

      前面提到的方括号表达式只能用来匹配一个字符,若需要匹配一个字符串,比如“Y8”等,这里需要使用定位符“^”与“$”。

      正则表达式“^[^A-Z][0-9]$”可用来校验由两个字符组成的字符串,该字符串要同时满足以大写字母开始、以数字结尾的条件。

量词

       量词又被称为限定符,量词用来指定字符必须要出现的次数,也就是在制定一个重复模式时要使用量词。

       量词具体包括*、+、?、{n}、{n,}、{n,m}共6种,具体使用方法如下表:

image

       正则表达式“happy{1,2}”可以用来校验字符串“happy”和字符串“happyhappy”。

       量词“?”如果出现在方括号表达式的里面的时候,只代表一个普通字符。例如:方括号表达式“[-0-9?]”可以用来校验任何一个数字或者一个普通字符“?”,或者一个普通字符“-”。

选择符

      在正则表达式中,“|”可以表示选择分支。例如,正则表达式“aaa|bbb|ccc”可以用来校验字符串“aaa”、字符串“bbb”、或者字符串“ccc”。

      使用选择符与其他元字符结合可以完成复杂的正则表达式,例如,正则表达式“^[0-9]|^[a-z]”可以用来校验以数字字符开头或者以小写字符开头的字符串。

 

未完待续…

© 著作权归作者所有

CoderAndy
粉丝 0
博文 7
码字总数 4316
作品 0
奉贤
私信 提问
加载中

评论(0)

周公51CTO博客有价值文章整理

说明:为方便朋友们查看本博客的文章,特地整理了本博客中周公认为值得一看的文章,不过有些文章因为年代久远且技术更新快的原因,里面所讲述的方法或者理论不再适合,请大家斟酌。 asp.net ...

周金桥
2018/06/29
0
0
XHProf 收集器 - xhprof-collector

xhprof-collector Single XHProf collector use XHProf API. Notice that this is a collector only, so you have to get a gui to show collected data such as xhgui. Tested php version ......

ZoaChou
2018/12/21
491
0
正则表达式之——Perl正则表达式

概念 Perl正则表达式英文名称是Perl Compatible Regular Expression,缩写为PCRE。PCRE库包括一套执行常用表达模式函数,其语法来源于Perl语言。与POSIX正则表达式不同,Perl正则表达式需要以...

CoderAndy
2014/04/10
51
0
zabbix实战,利用139邮箱实现邮件+短信报警

最近,要实现zabbix监控服务器的邮件+短信报警,但是网上的资料都不怎么详细,所以本人把实战的过程详细的记录了下来。(呵呵,有点像连环画) 首先,前提思路是,只要实现邮件报警。那么,就...

duyunlong
2013/04/12
0
0
项目协作管理--Mingle

Mingle 是关于项目的协作管理(非开源软件)。Mingle的独特之处以及它在敏捷项目管理和团队协作方面的强大功能包括: Mingle并不局限于敏捷方法论——它默认提供了三种软件开发模版(Scrum, ...

匿名
2008/11/10
7.7K
0

没有更多内容

加载失败,请刷新页面

加载更多

教你优雅解决项目Delay和交付质量差的问题

本文作者:AIOps智能运维 作者简介 凌薇 百度云智能运维业务研发负责人 负责百度云Noah自动化运维平台和智能运维解决方案的探索,在服务管理、资源管理、变更管理和故障管理的业务分析和设计...

百度开发者中心
2019/09/12
21
0
OSChina 周一乱弹 —— 原来这叫分别焦虑

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《A Careful Tearing》- Levi Patel 手机党少年们想听歌,请使劲儿戳(这里) 清明...

小小编辑
今天
79
0
trim、stripslashes、htmlspecialchars函数

通过 PHP 验证表单数据 我们要做的第一件事是通过 PHP 的 htmlspecialchars() 函数传递所有变量。 在我们使用 htmlspecialchars() 函数后,如果用户试图在文本字段中提交以下内容: <script>...

imzchloe
今天
77
0
kafka分区失败的原因分析

之前无论采取哪种分区模式都无法进行分区 生产者的分区的分割器 分区选择在多个分区存在的情况下,决定将消息发送到哪个分区. sarama有多个分割器: sarama.NewManualPartitioner() //返回一个...

2018rxl
今天
99
0
开源中国博客不更了

以后就在这里更了 https://www.cnblogs.com/songjilong/

农夫三拳有点疼-_-
今天
103
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部