`
aslijiasheng
  • 浏览: 58373 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

正则 &preg_match

    博客分类:
  • php
 
阅读更多
<?php
/*preg_match
可选,存储匹配结果的数组, $matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,
以此类推  */


$mode='/(^[\w\.\_]{2,6})@(\w{4,}).([a-z]{2,10})/';
$email='matg@gmail.com';
$matches = array(); 
if (preg_match($mode, $email,$matches)){
echo '匹配字符串';
 var_dump($matches);
//array(4) { [0]=> string(14) "matg@gmail.com" [1]=> string(4) "matg" [2]=> string(5) "gmail" [3]=> string(3) "com" }
}else{
echo '错误,请重新输入';
 var_dump($matches);
}
/*
说明,[\w\.\_] 相当于[0-9a-zA-Z\.\_] ,就是比\w多匹配 '.' 和 '_'两种字符
不等与 [\w._] 因为 . 匹配除换行任何字符 而不是“ .”
(^[\w\.\_]{2,6}) 就是 数字 或字母 或'.''_' 出现 两次 到六次   例如  .. 是匹配的
*/

/*
定界符,通常使用 "/"做为定界符开始和结束,也可以使用"#"。
什么时候使用"#"呢?一般是在你的字符串中有很多"/"字符的时候,因为正则的时候这种字符需要转义
*/
$regex = '/^http:\/\/([\w.]+)\/([\w]+)\/([\w]+)\.html$/i'; 
//$regex = '#^http://([\w.]+)/([\w]+)/([\w]+)\.html$#i';    //$是以.html结尾
//后一个"i"就是修饰符,表示忽略大小写,还有一个"x"表示忽略空格。
$str = 'http://www.youku.com/show_page/id_ABCDEFG.html'; 
$matches = array(); 
if(preg_match($regex, $str, $matches)){ 
    var_dump($matches); 

  
echo "<br>";


//通配符(lookarounds):断言某些字符串中某些字符的存在与否!
/*
lookarounds分两种:lookaheads(正向预查 ?=)和lookbehinds(反向预查?<=)。
格式:
正向预查:(?=) 相对应的 (?!)表示否定意思
反向预查:(?<=) 相对应的 (?<!)表示否定意思
前后紧跟字符
*/
$regex = '/(?<=c)d(?=e)/';  /* d 前面紧跟c, d 后面紧跟e*/
$str = 'abcdefgk'; 
$matches = array(); 
  
if(preg_match($regex, $str, $matches)){ 
    var_dump($matches); //输出 d

  
echo "\n"; 

//否定意义:

$regex = '/(?<!c)d(?!e)/';  /* d 前面不紧跟c, d 后面不紧跟e*/
$str = 'abcdefgk'; 
$matches = array(); 
  
if(preg_match($regex, $str, $matches)){ 
    var_dump($matches); // 没有输出

  
echo "<br>"; 

$regex = '/(25[0-5])/';  /* d 前面不紧跟c, d 后面不紧跟e*/
$str = '182'; 
$matches = array(); 
  
if(preg_match($regex, $str, $matches)){ 
    var_dump($matches); // 

  
echo "\n"; 

?>
<?php 
/*
限定符:
如[\w]{3,5}或者[\w]*或者[\w]+这些[\w]后面的符号都表示限定符。现介绍具体意义。

     {3,5}表示3到5个字符。{3,}超过3个字符,{,5}最多5个,{3}三个字符。
     
     
 特殊殊字符 解释 
     * 0到多次 
     + 1到多次还可以写成{1,} 
     ? 0或1次 
     . 匹配除换行符外的所有单个的字符 
     \w [a-zA-Z0-9_] 
     \s 空白字符(空格,换行符,回车符)[\t\n\r] 
     \d [0-9] 
     
     
字符域: [\w]用方括号扩起来的部分就是字符域。

脱字符号 ^:

           ^放在字符域(如:[^\w])中表示否定(不包括的意思)——“反向选择”

           ^ 放在表达式之前,表示以当前这个字符开始。(/^n/i,表示以n开头)。
           


*/
?>
 
$ip_ereg = "^((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]?)$";
 
解读: 以25X  (25)不是【25】 中括号是代表任何其中之一 &&  X为(012345)任何一个 即 251, 252,253,254,255,
         或 2 xy  X为任何01234任何一个,Y 是也是0123456789任何一个 例如 213
           或 0或1 匹配 0次或1次   [0-9][0-9]? 匹配的是 12, 19 整个下来就是  匹配  119,109 或010,或39,或9 这样的
 
        以上的三个 任何一个  {3}匹配三次  就成了  251.213.9.
  
        外加25X  X 为012345, 例如251   或2XY 或 或 0或1 匹配 0次或1次。。。。 $结尾
        就是说 以 252类似结尾的
      
       251.213.39.252
分享到:
评论

相关推荐

    php正则表达式preg_match_all(本人收藏的范例)

    本人多年收藏的preg_match_all表达式例子

    preg-match绕过

    在 PHP 中,preg_match 函数用于执行正则表达式匹配。为了避免绕过 preg_match 函数的功能限制,通常可以采取以下措施: 过滤用户输入:在将用户输入作为正则表达式模式使用之前,应该对其进行过滤和验证,确保用户...

    php小经验:解析preg_match与preg_match_all 函数

    `preg_match()`函数用于执行单次正则匹配。它的基本语法是: ```php int preg_match(string pattern, string subject, [array matches], [int flags]) ``` `pattern`参数是你定义的正则表达式,`subject`是要在其上...

    php使用preg_match()函数验证ip地址的方法

    preg_match('/^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$/', $ipAddress); 代码二、 &lt;?php /* *@return Boolen *@param String $ip 要匹配的ip地址 *@param ...

    PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】

    主要介绍了PHP preg_match实现正则表达式匹配功能,较为详细的介绍了preg_match函数的功能、参数含义、返回值及使用方法,并结合实例给出了preg_match输出是否匹配及匹配值的相关实现技巧,需要的朋友可以参考下

    PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)

    在前面我们也说过,基于perl的正则表达式要快于POXIS正则表达式处理函数,所以我们只介绍以preg开头的基于perl的正则表达式。注意:在能偶使用字符串函数处理的时候,就不要使用正则表达式来处理字符串,因为字符串...

    php中使用preg_match_all匹配文章中的图片

    `preg_match_all`函数是PHP中用于全局正则表达式匹配的关键函数,它可以在一个字符串中查找所有符合特定模式的匹配项,并将这些匹配项存储在一个数组中。下面我们将详细讨论`preg_match_all`函数的使用、参数以及...

    解决preg_match匹配过多字符长度的限制的思路分析

    但是官方的文档里面没有说明这一点。... 项目中,用preg_match正则提取目标内容,死活有问题,代码测得死去活来。 后来发现“pcre.backtrack_limit ”的值默认只设了100000。 解决办法:ini_set(‘pcre.backtrack_li

    基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)

    在本文中,我们将探讨如何在数据采集后使用`preg_match_all`进行编码转换和正则匹配。`preg_match_all`是PHP中的一个强大函数,用于在字符串中执行全局正则表达式匹配。以下是关于这个主题的详细讲解: 1. **使用...

    preg_match_all使用心得分享

    preg_match_all — 进行全局正则表达式匹配 说明 复制代码 代码如下:int preg_match_all ( string pattern, string subject, array matches [, int flags] ) 在 subject 中搜索所有与 pattern 给出的正则表达式匹配...

    php preg_match的匹配不同国家语言实例

    var_dump( preg_match("/[\S\b]{2,32}/",'ج') ); echo '&lt;hr&gt;'; var_dump( preg_match("/[\S\b]{2,32}/",'中国') ); 是不行的 需要加一个参数u,按照uniode来读码 &lt;?php var_dump( preg_match("/[\S\b]{2,32}/u...

    php preg_match_all结合str_replace替换内容中所有img

    `preg_match_all` 是PHP中的一个正则表达式匹配函数,它可以找到所有匹配指定模式的字符串,并返回一个数组。在这个例子中,它的任务是找出所有`&lt;img&gt;`标签,并提取出`src`属性的值。使用的正则表达式是: ```regex...

    PHP中preg_match正则匹配中的/u、/i、/s含义

    在PHP中,`preg_match`是一个非常重要的函数,用于执行正则表达式的匹配。它能够帮助开发者在字符串中查找特定的模式,而这里的 `/u`, `/i`, 和 `/s` 是正则表达式修饰符,它们对匹配行为进行特定的控制。下面我们将...

    PHP中preg_match函数正则匹配的字符串长度问题

    `preg_match`函数第一个参数为正则表达式,第二个参数为要进行匹配的字符串,它会返回一个布尔值,表示正则表达式是否匹配成功,同时通过第三个参数引用的方式,如果匹配成功,可以获取匹配到的子串。一个基本的`...

    PHP函数preg_match_all正则表达式的基本使用详细解析

    preg_match_all函数具体说明大家可以查看PHP手册,本文运用 preg_match_all用于测试正则表达的效果。 实例代码: 复制代码 代码如下:$html = ‘”biuuu”&gt;jb51.net&lt;/div&gt;&lt;div id=”biuuu_2″&gt;jb51.net2&lt;/div&gt;&lt;div ...

    preg-match绕过-01-第九天知识点回顾.ev4.rar

    4. **使用预编译的正则表达式**:使用`preg_quote`函数转义用户输入,并结合`preg_match_all`或`preg_replace_callback`等更安全的函数。 5. **代码审计**:定期审查代码,确保所有使用`preg_match`的地方都遵循...

Global site tag (gtag.js) - Google Analytics