正则表达式(即:匹配模式Pattern)
通过学习《正则表达式-Regular-Expression-Tutorial.pdf》这份文档,对正则表达式有了很好的了解,原因只有1个--这份文档写得太好了。
它的下载地址是:http://www.cnblogs.com/JimmyZhang/archive/2007/10/24/936151.html
在这份文档中,提到了练习正则表达式的工具code-architects-regex-tester,工具的使用可以参考链接http://hi.baidu.com/kedulinjl/item/35d6df11f93e76e65f53b156
通读了1遍《正则表达式-Regular-Expression-Tutorial.pdf》,先把记在本上的东西挪到这里,待继续学习(《LINUX鸟哥私房菜》第12章-正则表达式,《HEAD FIRST PHP & MySQL》第10章-正则表达式 替换规则)后再完善这篇BLOG。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
“MySQL”的正式发音是“My Ess Que Ell”(而不是“my sequel”),但我们并不介意你的发音方式是“my sequel”或其他当地方式。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
正则表达式的概念:
标准版:PHP提供了一种强大的方法创建和匹配文本中的模式。可以创建一些规则来查找文本串中的模式。这些规则就称为正则表达式,或简写为regex。
简易版:正则表达式是一些规则,用于匹配一个或多个串中的模式。
关于元字符
是在正则表达式中具有特殊含义的字符,利用元字符可以在正则表达式中描述文本模式。
元字符 |
作为元字符的时候 |
作为该字符本身的时候 |
备注 |
“.” |
“.”是一个元字符,匹配除换行符意外的任意单个字符 |
当匹配“.”本身,需转义“\.” |
能匹配字母或数字(类似于\w), |
\w |
查找任何字母数字 |
“w”只是个普通字符 |
包括a-z和A-Z 包括0-9(类似于\d) |
\s |
查找空格字符、制表符、换行、回车符 |
“s”只是个普通字符 |
匹配1行中的2个空格字符的写法: \s\s或者\s{2} |
\d |
查找所有单个数字 |
“d”只是个普通字符 |
匹配两位数的写法: |
^ |
查找一个串的开始位置 |
||
$ |
查找串尾 |
||
“\” |
“\”是一个元字符,转义字符 |
当匹配“\”本身,需转义“\\” |
|
“[” “]” |
“[” “]”也是元字符 |
当匹配“[” “]”,需转义“\[” “\]” |
|
\r |
“\r”表示回车 |
“r”只是个普通字符 |
|
\n |
“\n”表示换行 |
“n”只是个普通字符 |
正则表达式常用到的符号的说明
符号 |
简要说明 |
其它说明 |
+ |
1个或多个 |
\d{1,} |
* |
0个或多个 |
\d{0,} |
? |
0个或1个 |
\d{0,1} |
{min,max} |
指示了前面的字符或元字符重复次数的范围 |
{2,4}要求应当在一行中出现2、3或4次 |
\w |
[a-zA-Z0-9] |
|
\W |
[^a-zA-Z0-9] |
|
\s |
查找空格字符 |
空格字符、制表符、换行、回车符 |
\S |
完全,一字不漏 |
|
\d |
所有单个数字 |
[0-9] |
\D |
所有非数字 |
[^0-9] |
\b |
字符首 |
位于表达式首的“\b”理解成1个非获取匹配的一个特例 |
\B |
字符尾 |
|
^ |
文本首 |
|
$ |
文本尾 |
|
[a-c] |
字符类:匹配正则表达式中单个字符的一组规则 |
[a-c]会匹配a、b、c |
[^a-c] |
这个^表示“匹配除…以外的所有字符” |
会匹配除a、b、c以外的所有字符 |
与正则表达式相关的PHP函数
preg_match()
这个PHP函数会检查一个文本串,查看它与一个正则表达式是否匹配。如果匹配,这个函数返回true,否则返回false。
上面的这个函数理解起来很简单,也是最基本的验证,即:验证用户输入的字符串是不是符合正则表达式。
preg_replace()
使用这个PHP函数可以根据一个正则表达式替换一个串中的子串。 这个函数完成一个查找一个替换操作,使用一个正则表达式进行查找,并替换为你提供的串。
上面的这个函数的意思是,用户可能输入的电话号码是:(010)62222222、010-62222222、010 6222 2222,那么使用这个函数可以把每种用户输入的形式转变为标准化的格式存放到数据库里。
checkdnserr()
这个PHP函数检查一个域名,来看它是否确实存在。验证E-mail地址时这很方便,因为你希望确保E-mail的域部分是真实的。
举个例子,如果用户输入的E-mail地址符合正则表达式,但是@后面的域名并没有被注册过,那这不也还是白搭么,谁联系的上你。
[概念补充-DNS]
域名系统(Domain Name System,简称DNS)是一个分布式数据服务,提供世界范围内域及其IP地址的一个目录,使域名的使用成为可能。如果没有DNS,我们就必须键入211.147.4.31而不是douban.com
正则表达式(即:匹配模式Pattern)的更多相关文章
- java 数据类型String 【正则表达式】匹配工具 Pattern和Matcher
Pattern和Matcher的介绍: Pattern对象是正则表达式编译后在内存中的表示形式,因此正则表达式宇符串必须先被编译为Pattern对象,然后再用该Pattern对象创建对应的Matche ...
- smix到底是个啥?Perl的正则表达式匹配模式
最近在研究一个perl项目,临时学习了一下perl语法,强行看项目源码.因为总是见到各种正则表达式后面接smxi之类,虽然知道是匹配模式,但脑子里毫无概念.所以特地去学习了一下. 以上为背景. Per ...
- RegExp正则匹配模式汇总
正则表达式提供另一种强大的文本搜索和处理方式,对于正则表达式,不同语言有着不同的实现,JavaScript采用的Perl5的语法.对于极少数匹配模式是简单的全字符文本的情况,我们往往会采用indexO ...
- RegExp正则表达式的匹配
JavaScript RegExp 对象 RegExp 对象 正则表达式是描述字符模式的对象. 正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具. 语法 var patt=n ...
- SQL中常用模糊查询的四种匹配模式&&正则表达式
执行数据库查询时,有完整查询和模糊查询之分.一般模糊语句如下:SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式:1.%:表示任意0个或多个字 ...
- Javascript中正则表达式的全局匹配模式
先看一道JavaScript题目,据说是国内某知名互联网企业的JavaScript笔试题,如果对正则的全局匹配模式不了解的话可能会对下面的输出结果感到疑惑. var str = "123#a ...
- 第11.11节 Python正则表达式的指定重复次数匹配模式及元字符”{}”功能介绍
在<第11.8节 Pytho正则表达式的重复匹配模式及元字符"?". "". "+"功能介绍>和<第11.10节 Pyth ...
- PHP 正则表达式---匹配模式
1.PHP 正则表达式 正则表达式贪婪匹配,非贪婪匹配. 默认是贪婪匹配, 例如 ①.贪婪匹配, $str = ' 香肠 月饼 '; preg_match('/ (.)</td>/',$s ...
- 第11.6节 Python正则表达式的字符串开头匹配模式及元字符“^”(插入符、脱字符)功能介绍
符号"^"为插入符,也称为脱字符,在Python中脱字符表示匹配字符串的开头,即字符串的开头满足匹配模式的要求.这个功能有点类似搜索函数match,只是这是通过搜索模式来指定,而m ...
随机推荐
- MyEclipse 2014 破解补丁及激活步骤
针对 MyEclipse Trail Expired 问题的解决方法 我用网上找的注册类生成注册码的方式注册了一下,重启MyEclipse仍然会有提示弹窗,不过剩余时间由 4 days变成了 5 da ...
- 关于Ext 修复源代码 bug的方法
Ext修复源代码出现的问题 1.使用override属性,重写组件 定义一个新的组件,override属性设为要重写的源组件 例子: Extjs4.2.3遇到的一个bug,Datefield 选择不了 ...
- angular.extend、angular.$watch、angular.bootstrap
1.angular.extend:依次将第二个参数及后续的参数的第一层属性(不管是简单属性还是对象)拷贝给第一个参数的第一层属性,即如果是对象,则是引用的是同一个对象,并返回第一个参数对象. 直接上代 ...
- 学会git玩转github,结尾有惊喜!有惊喜!有惊喜!
一.什么是Github Github是全球最大的社交编程及代码托管网站(https://github.com/). Github可以托管各种git库,并提供一个web界面(用户名.github.io/ ...
- Java IO设计模式(装饰模式与适配器模式)
01. 装饰模式 1. 定义 Decorator装饰器,就是动态地给一个对象添加一些额外的职责,动态扩展,和下面继承(静态扩展)的比较.因此,装饰器模式具有如下的特征: 它必须持有一个被装饰的对象(作 ...
- 几个SQL语句(备忘)
1.三涨停 select biao1.代码,biao1.名称 from biao1,biao2,biao3 where (biao1.涨幅+ biao2.涨幅+biao3.涨幅)>0.27 an ...
- mysql sql 基础总结
1 mysql top n使用 select * from table limit n; 2 统配符使用必须和like结合使用 like % 通配符 描述 % 替代一个或多个字符 _ 仅替代一个 ...
- 个人作业2--英语学习APP案例分析
1.下载APP并使用,上手体验 个人很喜欢这种风格,画面简洁,排版精细,尤其是联想词的界面,很惊喜.但是很多链接比如精选文章点进去之后的UI设计并不理想,感觉只是一个网页而已.并且我不能够保存或者收藏 ...
- linux用户及权限管理
[文件管理.管道.用户及组管理.用户及权限管理]\用户及组管理 用户与组管理 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这 ...
- Jenkins 的svn插件下载的代码不是最新代码的问题
项目组使用Jenkins做自动化的每日编译和单元测试.经常发现,当提交完代码后,在Jenkins的每日编译代码还是旧代码,刚提交的代码并没有check out出来. 后来发现Jenkins服务器的时间 ...