Loading... 正则表达式 一、什么是正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 正则表达式的大致匹配过程 依次拿出表达式和文本中的字符比较 如果每一个字符都能匹配,则匹配成功 一旦有匹配不成功的字符则匹配失败 如果表达式中有量词或边界,这个过程会稍微有一些不同 二、正则表达式展示 /[a-zA-z]+://[^\s]*/ //匹配URL /^((https|http|ftp)?://)[^\s]+/ //匹配URL和FTP /(\w+):\/\/([^\/:]+)(:\d*)?([^# ]*)/ //匹配URL协议、域、端口及相对路径 /\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/ //匹配邮箱地址 三、正则匹配函数 1. preg_match 执行匹配正则表达式 参数 描述 pattern 必需。要搜索的模式,字符串类型。(正则表达式) subject 必需。被查询的字符串。 matches 可选。搜索结果。 示例: $pattem = '/[0-9]/'; $subject = '11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk'; $a = preg_match($pattem,$subject,$matches); var_dump($a); // 输出匹配次数 var_dump($matches); // 输出匹配结果 2. preg_match_all 执行一个全局正则表达式匹配 参数 描述 pattern 必需。要搜索的模式,字符串类型。(正则表达式) subject 必需。被查询的字符串。 matches 可选。搜索结果。 示例: $pattem = '/[0-9]/'; $subject = '11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk'; $a = preg_match_all($pattem,$subject,$matches); var_dump($a); // 输出匹配次数 var_dump($matches); // 输出匹配结果 3. preg_replace 执行一个正则表达式的搜索和替换 参数 描述 pattern 必需。要搜索的模式,可以使一个字符串或字符串数组。(正则表达式) replacement 必需。用于替换的字符串或字符串数组。 subject 必需。被查询的字符串或字符串数组。 limit 可选。进行替换的最大次数。默认是 -1(无限)。 示例 1: $pattem = '/ouyangke/'; $replacement = '欧阳克'; $subject = '11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk llllmmmmssssooopppqqqqrrrrssswwwvvvzzzxxxx ouyangke ouyangke ouyangke zhulaoshi zhulaoshi zhulaoshi ximen ximen ximen '; $a = preg_replace($pattem, $replacement, $subject); var_dump($a); 示例 2: $pattem = array('/ouyangke/','/ximen/'); $replacement = array('欧阳克','西门大官人'); $subject = array( '11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk llllmmmmssssooopppqqqqrrrrssswwwvvvzzzxxxx ouyangke ouyangke ouyangke ', 'ouyangke ouyangke ouyangke zhulaoshizhulaoshi ximen ximen ximen ' ); $a = preg_replace($pattem, $replacement, $subject); var_dump($a); 4. preg_filter 执行一个正则表达式搜索和替换 参数 描述 pattern 必需。要搜索的模式,可以使一个字符串或字符串数组。(正则表达式) replacement 必需。用于替换的字符串或字符串数组。 subject 必需。被查询的字符串或字符串数组。 limit 可选。进行替换的最大次数。默认是 -1(无限)。 示例 1: $pattem = '/ouyangke/'; $replacement = '欧阳克'; $subject = '11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk llllmmmmssssooopppqqqqrrrrssswwwvvvzzzxxxx ouyangke ouyangke ouyangke zhulaoshi zhulaoshi zhulaoshi ximen ximen ximen '; $a = preg_filter($pattem, $replacement, $subject); var_dump($a); 示例 2: $pattem = array('/ouyangke/','/ximen/'); $replacement = array('欧阳克','西门大官人'); $subject = array( '11112222333344445555666677778888999900000 aaabbbcccdddeeefffggghhhiiijjjjkkkk llllmmmmssssooopppqqqqrrrrssswwwvvvzzzxxxx ouyangke ouyangke ouyangke ', 'ouyangke ouyangke ouyangke zhulaoshizhulaoshi zhulaoshi ximen ximen ximen ' ); $a = preg_filter($pattem, $replacement, $subject); var_dump($a); 5. preg_quote 转义正则表达式字符 参数 描述 str 必需。要转义的字符串。 示例: $subject = '^ouyangke$zhulaoshi=miejue!\ximen&[] '; $a = preg_quote($subject); var_dump($a); 6. preg_grep 返回匹配模式的数组条目 参数 描述 pattern 必需。要搜索的模式,可以使一个字符串。(正则表达式) input 必需。输入数组 示例: $pattem = '/^(\d+)?\.\d+$/'; $array = array(1, 2, 3.4, 53, 7.9); $a = preg_grep($pattem,$array); var_dump($a); 7. preg_split 通过一个正则表达式分隔字符串 参数 描述 pattern 必需。要搜索的模式,可以使一个字符串。(正则表达式) subject 必需。被查询的字符串 limit 可选。分隔得到的子串最多只有 limit 个。默认是 -1(无限) 示例: $pattem = '/[\s,]+/'; $subject = 'ouyangke ouyangke zhulaoshi zhulaoshi ximen ximen'; $a = preg_split($pattem,$subject); var_dump($a); Last modification:January 15, 2023 © Allow specification reprint Like 如果觉得我的文章对你有用,请随意赞赏