PHP 正则表达式 字符串匹配 入门示例代码

强大的PHP正则表达式,入门程序
// Function myEreg($p, $s, $preg)
// 可以通过对$preg 设置决定是否采用 POSIX 还是兼容perl 的正则匹配
// 本文所采用的ereg()函数对大小定敏感如果不想去区分大小写,
// 则可以使用 eregi() 函数去替代 ereg() 函数
// 如果匹配成功,则输出 Result is : True
// 否则输出 Result is : False
    $title_prefix = '例 ';
    $call_num = 1;
    $title_suffix = '<br />';
function myEreg( $p, $s, $preg = FALSE )
{
    global $call_num, $title_prefix, $title_suffix;
    echo $title_prefix.$call_num.$title_suffix;
    $call_num++;
    $function_name = ( $preg ) ? 'preg_match' : 'ereg' ;
    echo "$p = "$p" <br />";
    echo "$s = "$s" <br />";
    echo "Call function is : $function_name($p, $s) <br />";
    if ( $function_name($p, $s) )
    echo "Result is : True <br /><br />rn";
    else
    echo "Result is : False <br /><br />rn";
    return True;
}
// -----------------------------------------------------------------
// 学习开始 --------------------------------------------------------
// -----------------------------------------------------------------
// 最简单的一种匹配模式
// 从$s 中寻找$p 字符串
// 例 1 匹配失败$p 出现在$s 中
    $p = 'jear';
    $s = 'I love jear forevery!';
    myEreg($p, $s);
// -----------------------------------------------------------------
// 匹配特殊字符比如$ . ^ 等,属于正则表达式的相关字符
// 使用对这些字符进行转义
// 例 2 本例匹配将成功,如果剔除将失败
    $p = '$100';
    $s = 'I want lend jear $100.';
    myEreg($p, $s);
// 此处将直接使用 $ 去匹配
// 例 3 匹配失败
    $p = '$100';
    myEreg($p, $s);
// -----------------------------------------------------------------
// 使用 ^ 匹配
// ^ 指出必须与字符串的开头字符串匹配
// 例 4 本例匹配失败$p 虽然出现在$s 中,但不是在开头位置
    $p = '^jear';
    myEreg($p, $s);
// 例 5 本例匹配成功,$p 在$s 的开头位置
    $s = 'jear is my good friend !';
    myEreg($p, $s);
// -----------------------------------------------------------------
// 使用 $ 匹配
// $ 指出必须表示它必须与字符串的末尾字符串匹配
// 例 6 本例匹配失败$p 不是在$s 的尾部出现
    $p = 'jear$';
    myEreg($p, $s);
// 例 7 本例匹配成功,$p 在$s 的尾部出现
    $s = 'I love jear';
    myEreg($p, $s);
// -----------------------------------------------------------------
// 使用 . 匹配
// . 可以匹配任意单个字符
// 例 8 本例匹配成功
    $p = 'je.r';
    $s = 'jear';
    myEreg($p, $s);
// 例 9 匹配失败
    $s = 'jer';
    myEreg($p, $s);
// -----------------------------------------------------------------
// 使用 [] 预定义一个类进行匹配
// 仔细观察$s 的书写,与$p 比较
// 例 10 匹配成功
    $p = 'j[eE]ar';
    $s = 'I love jear.';
    myEreg($p, $s);
// 例 11 匹配成功
    $s = 'I love jEar';
    myEreg($p, $s);
//例 12 匹配失败因为 jaar 不符合$p 所定义的一个类串
    $s = 'I love jaar.';
    myEreg($p, $s);
// -----------------------------------------------------------------
// 使用 [^] 去排除一个预定义的类
// 例 13 匹配成功
// 在进行匹配时,$p 规定了在 j 字母后只要不出现 abcd ,同时尾部是以
// ar 结束的,即匹配成功
    $p = 'j[^abcd]ar';
    $s = 'I love jear just love my self !';
    myEreg($p, $s);
// 例 14 匹配失败
    $s = 'I love jaar !';
    myEreg($p, $s);
// -----------------------------------------------------------------
// 使用- 方式去在 [] 类中定义一个范围
// 例 15 匹配成功因为 预定义类指出字符范围为 0 到 6,而 3th 的 th 前
// 数字 3 处在这一类范围内
    $p = '[0-6]th';
    $s = 'This is the 3th month that i gets along with jear!';
    myEreg($p, $s);
// 例 16 匹配失败自己分析一下原因
    $s = 'This is the 9th month that i gets along with jear!';
    myEreg($p, $s);
// 例 17 匹配成功使用 ^ 类似于取反运算
    $p = '[^0-6]';
    myEreg($p, $s);
// 例 18 匹配成功
    $p = 'je[a-z]r';
    $s = 'I love jear!';
    myEreg($p, $s);
// 例 19 匹配成功解决大小写匹配
    $p = 'je[a-zA-Z]r';
    $s = 'I love jeAr !'; // or $s = 'I love jear !';
    myEreg($p, $s);
// -----------------------------------------------------------------
// 使用 | 做选择性匹配
// | 可以去做一个选择性的匹配.
// 例 20 匹配成功
    $p = 'jear|cxj|cat';
    $s = 'I love jear !';
    myEreg($p, $s);
// 例 21 匹配成功
    $s = 'I love cxj !';
    myEreg($p, $s);
// 例 22 匹配成功组合 [] - 方式去匹配
    $p = '^([[a-zA-Z]ear)';
    $s = 'Jear is my good friend !';
    myEreg($p, $s);
// 例 23 匹配成功
    $s = '0ear is my good firend !';
    myEreg($p, $s);
// -----------------------------------------------------------------
// 使用 + 号去匹配重复字符,重复次最少是一次
// 例 24 匹配成功 Be+p 指定对于e字符可以最少重复一次,最多重复次不限
    $p = 'Be+p';
    $s = 'Beep';
    myEreg($p, $s);
// 例 25 匹配成功
    $s = 'Beeeep';
    myEreg($p, $s);
// -----------------------------------------------------------------
// 使用 ? 号去匹配重复字符, 与 + 号类似,但不规定重复最少次数,
// 规定了最多只能重复一次
// 例 26 匹配成功
    $p = 'Be?p';
    $s = 'Bp';
    myEreg($p, $s);
// 例 27 匹配失败因为 e 出现了两次
    $p = 'Be?p';
    $s = 'Beep';
myEreg($p, $s);
// -----------------------------------------------------------------
// 使用 * 号匹配重复字符, 与 + 号类似, 没有规定最少重复次数
// 例 28 匹配成功
    $p = 'Be*p';
    $s = 'Beep';
    myEreg($p, $s);
// 例 29 匹配成功
    $p = 'Be*p';
    $s = 'Bp';
    myEreg($p, $s);
// 例 30 匹配成功
    $p = 'Be*p';
    $s = 'Beeeeeeeeeep';
    myEreg($p, $s);
// -----------------------------------------------------------------
// 使用{n} 号规定出现的具体次数
// 例 31 匹配成功规定 e 字符必须出现两次
    $p = 'Be{2}p';
    $s = 'Beep';
    myEreg($p, $s);
// 例 32 匹配失败
    $s = 'Beeep';
    myEreg($p, $s);
// 例 33 匹配失败
    $s = 'Bep';
    myEreg($p, $s);
// -----------------------------------------------------------------
// 使用{n,m} 号规定出现的最少和最大次数
// 例 34 匹配成功规定 e 字符可以不出现在$s 里, 但最多可以出现 2 次
    $p = 'Be{0,2}p';
    $s = 'Beep';
    myEreg($p, $s);
// 例 35 匹配成功
    $s = 'Bp';
    myEreg($p, $s);
// 例 36 匹配失败 e 出现次数为3 次,超过规定的2 次限定
    $s = 'Beeep';
    myEreg($p, $s);
// -----------------------------------------------------------------
// 使用{n,} 号规定出现的最少次数,但不规定最多次数
// 例 37 匹配成功
    $p = 'Be{1,}p';
    $s = 'Bep';
    myEreg($p, $s);
// 例 38 匹配成功
    $p = 'Be{1,}p';
    $s = 'Beeeeeep';
    myEreg($p, $s);
// 例 39 匹配失败 e 没有在$s 中出现,而规定必须要出现 1 次
    $p = 'Be{1,}p';
    $s = 'Bp';
    myEreg($p, $s);
// ----------------------------------------------------------------
// () 的使用联系以下实例将多个正则联系起来,作为一个单独个体对待
// 例 41 匹配成功
    $p = '^(good|best)';
    $s = 'good';
    myEreg($p, $s);
// 例 42 匹配成功
    $s = 'best';
    myEreg($p, $s);
// ----------------------------------------------------------------
// 更多的示例
// ----------------------------------------------------------------
// 例 43 匹配日期示例 0000-00-00 到 9999-99-99 没有规定检查日期的合法性
    $p = '[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}';
    $s = '2004-12-1';
    myEreg($p, $s);


发表于:2017-09-19 20:22:12

原文链接(转载请保留): http://www.multisilicon.com/blog/a26153977.html

友情链接: MICROIC
首页