php基础知识(5)正则表达式

一、匹配次数

(1) *     匹配前面的子表达式零次或多次

(2) +     匹配前面的子表达式一次或多次,+ 等价于 {1,}

(3) ?     匹配前面的子表达式零次或一次,? 等价于 {0,1}

(4){n}    n 是一个非负整数,匹配确定的n 次

(5){n,}   n 是一个非负整数,至少匹配n 次

(6){n,m}  m 和 n 均为非负整数,最少匹配 n 次且最多匹配 m 次。在逗号和两个数之间不能有空格

二、匹配值

(1) x|y    匹配 x 或 y

(2)[xyz]   字符集合

(3)[^xyz]  负值字符集合

(4)[a-z]    字符范围,匹配指定范围内的任意字符

(5)[^a-z]   负值字符范围,匹配任何不在指定范围内的任意字符

(1)\       将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符

(2)^       匹配输入字符串的开始位置

(3) $      匹配输入字符串的结束位置

(4) ?      当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的

(5) .      匹配除 "\n" 之外的任何单个字符。要匹配包括 ‘\n‘ 在内的任何字符,请使用象 ‘[.\n]‘ 的模式

三、元字符

(1)\d     匹配一个数字字符。等价于 [0-9]

\D     匹配一个非数字字符。等价于 [^0-9]

(2)\w     匹配包括下划线的任何单词字符。等价于‘[A-Za-z0-9_]‘

\W     匹配任何非单词字符。等价于‘[^A-Za-z0-9_]‘

(3)\b     匹配一个单词边界,也就是指单词和空格间的位置

\B     匹配非单词边界

(4)\s   匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]

\S   匹配任何非空白字符。等价于 [^ \f\n\r\t\v]

(5)\f   匹配一个换页符。等价于 \x0c 和 \cL

(6)\n   匹配一个换行符。等价于 \x0a 和 \cJ

(7)\r   匹配一个回车符。等价于 \x0d 和 \cM

(8)\t   匹配一个制表符。等价于 \x09 和 \cI

(9)\v   匹配一个垂直制表符。等价于 \x0b 和 \cK

四、正则函数

1、preg_grep--返回与模式匹配的数组单元,结果使用从输入数组来的键名进行索引,如果不希望这样的结果,用array_values()对结果重新索引。

$fl_array = preg_grep("/^(\d+)?\.\d+$/", $array);

2、preg_match_all -- 进行全局正则表达式匹配

$html = "<b>bold text</b><a href=howdy.html>click me</a>";

preg_match_all ("/(<([\w]+)[^>]*>)(.*)(<\/\\2>)/", $html, $matches);

for ($i=0; $i< count($matches[0]); $i++) {

echo "matched: ".$matches[0][$i]."\n"."<br/>";

echo "part 1: ".$matches[1][$i]."\n"."<br/>";

echo "part 2: ".$matches[3][$i]."\n"."<br/>";

echo "part 3: ".$matches[4][$i]."\n\n"."<br/>";

}

preg_match_all ("|<[^>]+>(.*)</[^>]+>|U","<b>example: </b><div align=left>this is a test</div>",$out, PREG_SET_ORDER);

print $out[0][0].", ".$out[0][1]."\n";

print $out[1][0].", ".$out[1][1]."\n";

preg_match_all ("|<[^>]+>(.*)</[^>]+>|U","<b>example: </b><div align=left>this is a test</div>",$out, PREG_PATTERN_ORDER);

print $out[0][0].", ".$out[0][1]."\n";

print $out[1][0].", ".$out[1][1]."\n";

3、preg_match -- 进行正则表达式匹配,在第一次匹配之后将停止搜索

preg_match("/^(http:\/\/)?([^\/]+)/i","http://www.php.net/index.html", $matches);  // 从 URL 中取得主机名

$host = $matches[2];                                                  //$host = www.php.net

preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $matches);                 // 从主机名中取得后面两段

echo "domain name is: {$matches[0]}\n"."<br/>";                       //domain name is: php.net

4、preg_replace -- 执行正则表达式的搜索和替换

//逆向引用后面紧接着数字的用法

$string = "April 15, 2003";

$pattern = "/(\w+) (\d+), (\d+)/i";

$replacement = "\${1}1,\$3";

print preg_replace($pattern, $replacement, $string);

//在 preg_replace() 中使用索引数组

$string = "The quick brown fox jumped over the lazy dog.";

$patterns[0] = "/quick/";

$patterns[1] = "/brown/";

$patterns[2] = "/fox/";

$replacements[2] = "bear";

$replacements[1] = "black";

$replacements[0] = "slow";

print preg_replace($patterns, $replacements, $string);//The bear black slow jumped over the lazy dog.

//替换数个值

$patterns = array ("/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/","/^\s*{(\w+)}\s*=/");

$replace = array ("\\3/\\4/\\1\\2", "$\\1 =");

print preg_replace ($patterns, $replace, "{startDate} = 1999-5-27");//$startDate = 5/27/1999

//使用 /e 修正符

//这将使输入字符串中的所有 HTML 标记变成大写。

preg_replace ("/(<\/?)(\w+)([^>]*>)/e","‘\\1‘.strtoupper(‘\\2‘).‘\\3‘",$html_body);

===================================================================================================

一、整数

1、整数 :          "/^-?\d+$/"

2、正整数:         "/^[0-9]*[1-9][0-9]*$/"或者"/^[1-9]+$/"

3、负整数:         "/^-[0-9]*[1-9][0-9]*$/"

4、非正整数:       "/^((-\d+)|(0+))$/"

5、非负整数:       "/^\d+$/"

二、浮点数

1、浮点数:         "/^(-?\d+)(\.\d+)?$/"            //即所有的数字

2、正浮点数 :      "/^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/"

3、负浮点数:       "/^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/"

4、非正浮点数:     "/^((-\d+(\.\d+)?)|(0+(\.0+)?))$/" //(负浮点数 + 0)

5、非负浮点数:    "/^\d+(\.\d+)?$/"                // 0+正整数+整数(798.687)

三、英文字母

1、纯英文字母:     "/^[A-Za-z]+$/"

2、大写英文字符:   "/^[A-Z]+$/"

3、小写英文字母:   "/^[a-z]+$/"

4、英文字母和数字:  "/^[A-Za-z0-9]+$/"

5、英文字母和下划线: "/^\w+$/"

四、中文

1、中文、英文、数字及下划线:"/^[\u4e00-\u9fa5_a-zA-Z0-9]+$/"

2、中文字符:"/[^u4E00-u9FA5]/" //只要语句中有汉字就行

3、双字节字符(包括汉字在内):"/[^\x00-\xff]/"

4、gb2312:if(!preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/",$str))

utf-8 :if(!preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str))

5、Unicode编码中的汉字范围:"/^[\u2E80-\u9FFF]+$/"

五、

19、空行:"/\n[\s| ]*\r/"

20、/[^uFF00-uFFFF]/g

21、首尾空格:"/(^\s*)|(\s*$)/"

22、sql语句:/"^(select|drop|delete|create|update|insert).*$/"

23、信息中的任何数字 :"/(-?\d*)(\.\d+)?/"

 

六、应用

       1、验证url

(1)、"/^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$/"

(2)、"/^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$/"

(3)、 "/^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\‘:+!]*([^<>\"\"])*$/"

(4)、"/http://(/[\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)? /"

(5)、‘/<a href="(.*?)">(.*?)<\/a>/‘

(6)、"/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/"

       2、IP地址         

(1)、"/(\d+)\.(\d+)\.(\d+)\.(\d+) /"

(2)、"/((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/"

(3)、"/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/"

3、电话区号

(1)、"/^0\d{2,3}$/"

(2)、"/^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/"         //7或者8位

(3)、"/^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/"       //7或者8位

4、手机号码

(1)、"/^[(86)|0]?(13\d{9})|(15\d{9})|(18\d{9}$/)/"

5、email地址

(1)、"/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/"  //[email protected]  (x代表任何字母和数字,不限个数)

(2)、"/^\[email protected]\w+\.[a-zA-Z]{2,4}(\.[a-zA-Z]{2})?$/"

(3)、"/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/"

(4)、"/^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/"

6、邮政编码

(1)、"/[1-9]{1}(\d+){5}/"

(2)、"/^[1-9]\d{5}$ /"

7、时间

(1)、年-月-日: "/^(d{2}|d{4})-((0([1-9]{1}))|(1[0|1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/"

(2)、月/日/年: "/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/"

8、账号:"/^[a-zA-Z][a-zA-Z0-9_]{4,15}$ /" //(字母开头,允许5-16字节,允许字母数字下划线)

      用户名:"/^[a-z0-9_-]{3,16}$/"

密  码:"/^[a-z0-9_-]{6,18}$/"

9、图片链接

(1)、网络链接:"/(h|H)(r|R)(e|E)(f|F) *= *(‘|‘)?(\w|\\|\/|\.)+(‘|‘| *|>)?/"

(2)、图片链接:"/(s|S)(r|R)(c|C) *= *(‘|‘)?(\w|\\|\/|\.)+(‘|‘| *|>)?/"

10、验证身份证

(1)、"/^\d{6}((1[89]|(2\d)))\d{2}((0\d)|(1[0-2]))((3[01])|(0-2)\d)\d{3}(\d|x)$/i/"

11、html标签

(1)、"/^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/"

(2)、"/<(.*)>.*<\/\1>|<(.*) \/>/"

13、删除代码\\注释:"(?<!http:|\S)//.*$"

php基础知识(5)正则表达式

时间: 2024-08-03 12:13:32

php基础知识(5)正则表达式的相关文章

JavaScript基础知识梳理----正则表达式

JavaScript基础知识梳理----正则表达式 1.创建 方式:---字面量:var 变量名=/表达式/模式修饰符 ---构造函数:var 变量名=new RegExp(“表达式”,“模式修饰符”) 说明: 表达式 单个字符和数字 . 匹配除换行符之外的任意字符 [a-z0-9] 匹配方括号中的任意字符 [^a-z0-9] 匹配不在方括号中的任意字符 \d 匹配数字 \D 匹配非数字 \w 匹配字母 \W 匹配非字母 空白字符 \0 匹配null字符 \b 匹配空格符 \f 匹配进纸符 \n

javascript基础知识之正则表达式(regular expression)

一种字符串匹配的模式,用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件的子串等.注意:在javascript中正则表达式也是一种对象1:创建正则表达式两种方式:隐式创建(文字量方法)和显示创建(使用构造函数)eg:文字量方法:var regExp = /pattern/flags;将文字量的正则表达式赋值给一个变量,包含在两个斜杠之间的一个或多个字符,在后一个斜杠的后面,可以指定一个或多个选项.var regExp1 = /abc/;var regExp2 = /a

Python基础知识之正则表达式re模块

**转载自:http://www.cnblogs.com/alex3714/articles/5161349.html** re模块常用方法 re.match(规则,字符串):默认从开头开始匹配,这种模式中'^'没用. re.search() re.findall():没有group方法了,把所有匹配到的字符放到以列表中的元素返回 re.split():分割 re.sub():匹配字符并替换 常用正则表达式: '.' 默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符

C# 基础知识-11---。NET正则表达式

Scala学习笔记--正则表达式基础知识、如何在scala内使用

正则表达式语法:https://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx 基础知识:正则表达式30分钟入门教程 http://www.jb51.net/tools/zhengze.html  版本:v2.33 (2013-1-10) 作者:deerchao 转载请注明来源 使用格式:  见java API  http://docs.oracle.com/javase/7/docs/api/ java : java.util.reg

python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding:utf-8from com.wenhy.crawler_baidu_baike import url_manager, html_downloader, html_parser, html_outputer print "爬虫百度百科调度入口" # 创建爬虫类class SpiderMai

正则表达式基础知识(一)

之前在linux中用到三剑客grep.awk.sed等,简单的接触过正则表达式,但是没有深入的了解正则表达式,又一次在python里面接触到正则表达式,所以想着尽量一次攻克正则表达式,所以就将自己学习印记留在此处,供自己复习,同时也将相关知识分享给大家. 分享几个在线测试与学习正则的地址: (1)http://deerchao.net/tutorials/regex/regex.htm  正则表达式30分钟入门 (2)http://tool.oschina.net/regex/ 在线测试以及有部

javascript之正则表达式基础知识小结

javascript之正则表达式基础知识小结,对于学习正则表达式的朋友是个不错的基础入门资料. 元字符 ^ $ . * + ? = ! : | \ / ( ) [ ] { } 在使用这些符号时需要用“\”来进行转移. 如果记不清楚那些标点符号需要转移,可以在使用标点符号时都使用反斜杠“\” 简单匹配 1.直接量 /javascript/ 匹配带有“javascript”的字符串 比如“javascript is an object-oriented scripting language” 2.[

转:正则表达式基础知识

一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式.该模式描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.如: JScript VBScript 匹配 /^\[ \t]*$/ "^\[ \t]*$" 匹配一个空白行. /\d{2}-\d{5}/ "\d{2}-\d{5}" 验证一个ID 号码是否由一个2位数字,一个连字符以及一个5位数字组成. /<(.*)&

java正则表达式基础知识(转)

1基础 2.1 简单字符类 构造 描述 [abc] a,b或c [^abc] 除a,b或c外的字符 [a-zA-Z] a至z 或 A至Z [a-d[m-p]] a至d 或 m至p [a-z&&[def]] d,e或f @Test public void testChar() { //匹配 b,c或d assertTrue("d".matches("[bcd]")); //匹配除 a,b,c 以外的字符 (否定) assertTrue("d&