php常见正则表达式
<?php /** * \d:0-9 \D:取反 * \w:0-9 a-z A-Z _ \W:取反 * \s:空白符 \S:除了空白符 * * 元字符: * . 除了换行符之外的任意字符 * * 匹配前面字符出现一次0次或者多次 * ? 出现一次或0次 * ^ 必须以它开头 * $ 必须以它结尾 * + 出现一次或者多次 * {n} 出现n次 * {n,} 大于n次 * {n,m} 大于n小于m * [] 集合 * () 整体 * [^] 取反 * | 或者 * [-] 范围 * 模式修正符: * i m e s U x A D u * */ //正则表达式139开头手机号码 $phone = '13960225896'; preg_match('/^139[0-9]{8}$/', $phone, $match); preg_match('/^139\d{8}$/', $phone, $match2); var_dump($match); var_dump($match2); //取出img标签的src $str = '<div class="u-face"><a href="//space.bilibili.com/106827698" target="_blank" report-id="head" class="fa"><img src="//i0.hdslb.com/bfs/face/03314a91769eb94ffea6dfdab833a9e29cf3d66a.jpg@68w_68h.webp" width="48" height="48" class="up-face"><!----><!----><!----></a></div>'; $pattern = '/<img.+?src="(.+?)".+?>/'; preg_match($pattern, $str, $match3); var_dump($match3); // * 后向引用 $str = '<b>abc</b><b>asdsbc</b><b>asdsbc</b>'; $pattern = '/<b>(.+?)<\/b>/'; $match4 = preg_replace($pattern, '\\1', $str); $match5 = preg_replace($pattern, '<b>123</b>', $str); var_dump($match4); var_dump($match5); //preg_match_all $userinfo = "Name: <b>PHP</b> <br> Title: <b>Programming Language</b>"; preg_match_all('/<b>(.*)<\/b>/U', $userinfo, $pat_array); var_dump($pat_array); //使用逗号或空格(包含" ", \r, \t, \n, \f)分隔短语 $keywords = preg_split("/[\s,]+/", "hypertext language, programming"); var_dump($keywords); //utf中文匹配 $str = 'UTF-8匹配:在javascript中,要判定字符串是中文是很简朴的。比如:var str = "php编程";if (/^[\u4e00-\u9fa5]+$/.test(str)) {alert("该字符串全部是中文");} else{alert("该字符串不全部是中文");}php中,是用 ...'; $pattern = '/[\x{4e00}-\x{9fa5}]+/u'; preg_match_all($pattern, $str, $match6); var_dump($match6); //gb3412中文匹配 $pattern = '/['.chr(0xb0).'-'.chr(0xf7).']['.chr(0xa1).'-'.chr(0xfe).']/'; preg_match_all($pattern, $str, $match7); //var_dump($match7);