外贸询盘网站,东营网络营销,做百度网站需要什么条件,常见搜索引擎有哪些因为比较重要#xff0c; 所以还是单独拿出来作一篇文章#xff0c; 好好学习一下。 正则表达式#xff1a;Regular expression 定义#xff1a;是负责对字符串做解析对比#xff0c;从而分析出字符串的构成#xff0c;以便进一步对字符串做相关的处理。 注#xff1a;正… 因为比较重要 所以还是单独拿出来作一篇文章 好好学习一下。 正则表达式Regular expression 定义是负责对字符串做解析对比从而分析出字符串的构成以便进一步对字符串做相关的处理。 注正则表达式允许用户通过使用某种特殊字符构建匹配模式然后把匹配模式与文件中的数据、程序输入或者Web页面的表单输入等目标对象进行比较根据这些输入中是否包含匹配模式来执行相应的程序。 正则表达式的语法(基础) 元字符 ^ 匹配指定字符串开头的字符串 $ 匹配指定字符串结尾的字符串 . 匹配除\n之外的任何单个字符代替任何字符 [] 匹配指定范围内的单个字符代替指定字符 | 在多项之间选择一个进行匹配 \ 转义字符 () 标记子表达式的开始和结束位置 * 匹配其左边的子表达式0次或多次 匹配其左边的子表达式1次或多次 ? 匹配其左边的子表达式0次或1次 限定符 {n}表示匹配该限定符左边字符n次 {n,}表示匹配该限定符左边至少n次 {n,m}表示匹配该限定符左边至少n次最多m次 转义字符 \n 一个换行符。等价于\x0a和\cJ \r 一个回车符。等价于\x0d和\cM \s 任何空白字符包括空格、制表符、换页符等。等价于[\f\n\r\t\v] \S 任何非空白字符。等价于[^\f\n\r\t\v] \t 一个制表符。等价于\x09和\cI \v 一个垂直制表符。等价于\x0b和\cK \f 一个换页符。等价于\x0c和\cL \cx 由x指明的控制字符。 字符类 [[:alpha:]] 匹配任何字母 [[:digit:]] 匹配任何数字 [[:alnum:]] 匹配任何字母和数字 [[:space:]] 匹配任何空白字符 [[:upper:]] 匹配任何大写字母 [[:lower:]] 匹配任何小写字母 [[:punct:]] 匹配任何标点符号 [[:xdigit:]] 匹配任何16进制数字相当于[0-9a-fA-F] [[:blank:]] 匹配空格和Tab等价于[\t] [[:cntrl:]] 匹配所有ASCII 0到31之间的控制符 [[:graph:]] 匹配所有的可打印字符等价于[^ \t\n\r\f\v] [[:print:]] 匹配所有的可打印字符和空格等价于[^\t\n\r\f\v] 反义 \W 匹配任意不是字母数字下划线或汉子的字符 \S 匹配任意不是空白符的字符 \D 匹配任意非数字的字符 \B 匹配不是单词开头或结束的位置 //模式举例 ^once //匹配给定模式开头的字符串 PHP$ //匹配给定模式结尾的字符串 ^Python$ //精确定位指定字符串 b.s //这个单词可以是bes、bis、bos.... b[eiou]s //这个单词只匹配 bes、bis、bos、bus b(a|e|i|o|oo)s //这个单词匹配bas、bes、bis、bos、boos pe* //匹配perl、peel、pet、port... co //匹配come、code、cool、co... a{3} //匹配aaa、cacaaad、aacoaaao... a{3,} //匹配aaa、aaab、caaaaa... a{1,3}b //匹配ab、aab、aaab... ab* //和ab{0,}同义a、ab、abb... ab //和ab{1,}同义ab、abb... ab? //和ab{0,1}同义a、ab a?b$ //匹配ab、abb... a(bc)* //匹配a、abc、abcbc... [ab] //与a|b同义匹配a、b [a-d] //与a|b|c|d及[abcd]同义匹配a、b、c、d。 ^[a-zA-Z_]$ //匹配所有的只有字母和下划线的字符串。如果不加^和$凡是含有字母和下划线的字符都会被匹配。 ^[a-zA-Z0-9_]{1,}$ //匹配所有包含一个以上的字母、数字或下划线的字符串。 ^[0-9]{1,}$ //匹配所有正数 ^\-{0,1}[0-9]{1,}$ //匹配所有的整数 ^\-{0,1}[0-9]{0,}\.{0,1}[0-9]{0,}$ //匹配所有小数 PHP有两大类函数支持正则表达式 一类是POSIX扩展函数(PHP5.2之后弃用) 另一类是Perl兼容的正则表达式函数(PHP4.0后支持)。 POSIX扩展正则表达式函数(PHP5后弃用) ereg() 字符串的正则匹配函数 ereg_replace() 区分大小写的正则表达式替换 eregi() 不区分大小写的正则表达式匹配 eregi_replace() 不区分大小写的正则表达式替换 split() 用正则表达式将字符串分割到数组中 spliti() 用正则表达式不区分字母大小写将字符串分割到数组中 sql_regcase() 产生用于不区分大小的正则表达式 //正则表达式匹配函数 int ereg(string $pattern, string $string [, array regs]); //区分大小写 int eregi(string $pattern, string $string [, array regs]); //不区分大小写 $arr_date array( 2008-06-01, 1996-11-29, 2005-0x-10, 12-12-12, 2012-12-25 00:10:20 ); for ($i0; $i5; $i){ $date $arr_date[$i]; if(ereg(([0-9]){4})-([0-9]{1,2})-([0-9]{1,2}), $date , $regs)){ echo 日期字符串$date 符合YYYY-MM-DD格式; echo $regs[1].$regs[2].$regs[3]; }else{ echo 日期字符串$date 不符合YYYY-MM-DD格式; } } ? //替换匹配字符串的函数 string ereg_replace(string $pattern, string $replacement, string $string); //区分大小写 string eregi_replace(string $pattern, string $replacement, string $string); //不区分大小写 $str You have a car , I have a Car , We have cARs! //源字符串 echo 替换前字符串为; echo $str; echo ; echo ; $pattern car; //匹配字符串 $replacement Apple; //替换后字符串 $str_rpc eregi_replace($pattern,$replacement,$str); echo 替换后字符串为; echo $str_rpc; ? //根据正则表达式分割字符串函数 array split(string $pattern, string $string [, int $limit]); $str aaa~bbb~ccc~ddd; //定义字符串变量 echo 字符串截取前$str; echo ; echo ; $sep_arr split(~,$str); echo 字符串截取后; //分割字符串变量$str echo ; print_r($str_arr); ? //生成正则表达式的函数 string sql_regcase(string $string); //不区分大小正则表达式 $str K#V3050 echo 原字符串$str; //定义字符串变量 echo ; echo ; $reg_str sql_regcase($str); echo 生成的正则表达式为; //生成正则表达式 echo $reg_str; ? PERL兼容正则表达式函数(PHP4后支持重点) PERL兼容正则表达式使用修正符 所谓修正符是指正则表达式最后的补充说明。 另外 PERL兼容正则表达式中所有的模式前后都需要加/ 修正符 i 匹配时忽略大小写 m 除了匹配^$整个字符串开头和结尾还匹配其中的换行符(\n)的之后和之前 s 使原点字符(.)匹配任意一个字符同时也匹配换行符 x 模式中的空白字符除了被转义的或在字符类中的以外完全被忽略 e preg_replace()在替换字符串中对逆向引用作正常的替换将其作为PHP代码求值并用其结果来替换所搜索的字符串 A 模式被强制为“anchored”即强制仅从目标字符串的开头开始匹配 D 模式中的行结束($)仅匹配目标字符串的结尾否则包含换行符 S 为加速匹配而对其进行分析分析一个模式仅对没有单一固定其实字符的nonanchored模式有用 U 使“?”的默认匹配成为贪婪状态 X 一个反斜线后面跟一个没有特殊意义的字母被当成该字母本身 u 模式字符串被当成UTF-8 preg_grep() 返回与模式匹配的数组单元的正则表达式函数 preg_match() 进行正则表达式匹配的函数 preg_match_all() 进行全局正则表达式匹配的函数 preg_replace() 执行正则表达式的搜索和替换的函数 preg_split() 用正则表达式分割字符串的函数 //返回与模式匹配的数组单元的正则表达式函数 array preg_grep(string $pattern, array $input [, int $flag]); $test_preg array( AK47, 163.com, happy new year, EX0000, 007 in USA, abc123, TEST-abc-315, 123654789, Euapa00! ); echo 原数组; echo ; print_r($test_preg); echo ; $preg_arr preg_grep(/^[A-Z].*[0-9]$/,$test_preg); //正则表达式 echo ; echo 将原数组中以任意大写字母开头的、中间任意个字符、最后以数字结尾的字符串找出; echo ; print_r($preg_arr); //输出匹配的元素 echo ; ? //进行正则表达式匹配的函数 int preg_match(string $pattern , string $subject [, arrayy $matches [, int $flag]]); $str_arr array( PHP 是优秀的Web脚本语言, Perl的文本处理功能很强大 ); foreach($str_arr as $str){ //使用了修正符 if(preg_match(/php/i,$str)){ echo 在字符串$str中找到对php的匹配; echo ; echo ; }else{ echo 在字符串$str中未找到对php的匹配; echo ; echo ; } } ? //进行全局正则表达式匹配的函数 int preg_match_all (string $pattern, string $subject, array $matches [,int $flag]); $html 粗体字符可点击的连接; preg_match_all(/(]*)(.*)()/, $html , $matches); for ($i0;$i echo 匹配.$matches[0][$i].\n; echo 第一部分.$matches[1][$i].\n; echo 第二部分.$matches[2][$i].\n; echo 第三部分.$matches[3][$i].\n\n; } ? //执行正则表达式的搜索和替换的函数 mixed preg_replace(mixed $pattern,mixed $replacement,mixed $subject [, int $limit]); $string The quick brown fox jumped over the lazy dog.; echo 原字符串; echo $string; echo ; $patterns[0] /quick/; $patterns[1] /brown/; $patterns[2] /fox/; $replacements[2] bear; $replacements[1] black; $replacements[0] slow; $str1 preg_replace($patterns,$replacements,$string); //替换字符串 echo 使用函数ksort()之前字符串替换为; echo $str1; echo ; ksort($patterns); //排序 ksort($replacements); //排序 $str2 preg_replace($patterns,$replacements,$string); echo 使用函数ksort()之后字符串替换为; echo $str2; echo ; ? //用正则表达式分割字符串的函数 array preg_split(string $pattern,string $subject [,int $limit [, int $flag]]); //参数$limit-1,$flag参数如下 PREG_SPLIT_NO_EMPTY只返回非空的部分 PREG_SPLIT_DELIM_CAPTURE界定符模式中的括号表达式会被捕捉返回 PREG_SPLIT_OFFSET_CAPTURE对每个出现的匹配结果同时返回其附属的字符串偏移量。注意这改变了返回的数组的值使其中的每个单元也是一个数组其中第一项为匹配字符串第二项为它在$subject中的偏移量 $str PHP language programming in Web; //定义字符串变量 echo 原字符串; echo $str; echo ; $chars preg_split(/ /,$str,-1,PREG_SPLIT_OFFSET_CAPTURE); //分割字符串 echo 调用函数preg_split()后; echo ; print_r($chars); ? 几例常见的正则表达式分析 实例1检查IP地址的正则表达式 直接上代码 $arr_ip array( //定义了一个数组 192.168.1.100, -12.255.0.10, 256.1.2.255, 10.9c.132.69, 255.255.255.255, 123.0.0.0.1 ); foreach ($arr_ip as $ip ) { //验证数组里的IP if (validateIp($ip)) { //验证ip echo $ip 是正确的IP地址; echo ; }else { echo $ip 不是正确的IP地址; echo ; } } function validateIp($ip){ //验证ip的函数 $iparray explode(.,$ip); for ($i0; $i count($iparray); $i) { if ($iparray[$i]255) { return (0); } return preg_match(/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/,$ip); } } ? 实例2检查中文字符的正则表达式 直接上代码 $str_arr array( //测试数组 I am very happy, 快乐编程快乐生活, PHP编程, 1997年香港回归, 英语学习ABC, 123456789 ); $patt_ch chr(0xa1).-.chr(0xff); //匹配中文字符的ASCII范围 foreach ($str_arr as $str){ echo 字符串$str是; if(preg_match(/[$patt_ch]/,$str)){ //注意在正则表达式的前后使用界定符 echo 存在中文; echo ; echo ; }else { echo 不存在中文; echo ; echo ; } } ? 实例3检查Email地址的正则表达式 $str_arr array( //测试数组 mymailsomesite.com, my_mailsomesite.com, my-mailsomesite.com, my.mailsomesite.com, mymailsomesite.ccoomm, mymailsite.cn, mymailsite.com, mymailsite, MyMailsomesite.com, My2007somesite.com, 163mail_for-me777somesite.com, 510137672qq.com ); $patt_email /^[_a-zA-Z0-9-]([0-9a-z][0-9a-z-]\.)[a-z]{2,4}$/; //验证邮箱 foreach ($str_arr as $str){ echo 字符串$str是; if(preg_match($patt_email,$str)){ //注意在正则表达式的前后使用界定符 echo 合法的Email格式; echo ; echo ; }else { echo 不合法的Email格式; echo ; echo ; } } ? 实例4检查URL地址的正则表达式 直接上代码 $str_arr array( //测试数组 http://www.liubaiqi.cn, www.liubaiqi.cn, http://www.liubaiqi.cn/login.html, //liubaiqi.com, :www.liubaiqi.cn ); $patt_url /^(http:\/\/)?[a-zA-Z0-9](\.[a-zA-Z0-9])*.$/; //验证URL的正则表达式 foreach ($str_arr as $str){ //遍历数组 echo 字符串$str是; if(preg_match($patt_url,$str)){ //匹配URL echo 合法的URL格式; echo ; echo ; }else { echo 不合法的URL格式; echo ; echo ; } } ? 小结正则表达式的内容暂时就说这么多如果以后遇到问题我再补充。 在使用过程中主要记住PERL函数的语法和正则表达式的格式 这是现在较为常用的。其他的了解就行。