<?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开头)。
*/
?>
/*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
相关推荐
本人多年收藏的preg_match_all表达式例子
在 PHP 中,preg_match 函数用于执行正则表达式匹配。为了避免绕过 preg_match 函数的功能限制,通常可以采取以下措施: 过滤用户输入:在将用户输入作为正则表达式模式使用之前,应该对其进行过滤和验证,确保用户...
`preg_match()`函数用于执行单次正则匹配。它的基本语法是: ```php int preg_match(string pattern, string subject, [array matches], [int flags]) ``` `pattern`参数是你定义的正则表达式,`subject`是要在其上...
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); 代码二、 <?php /* *@return Boolen *@param String $ip 要匹配的ip地址 *@param ...
主要介绍了PHP preg_match实现正则表达式匹配功能,较为详细的介绍了preg_match函数的功能、参数含义、返回值及使用方法,并结合实例给出了preg_match输出是否匹配及匹配值的相关实现技巧,需要的朋友可以参考下
在前面我们也说过,基于perl的正则表达式要快于POXIS正则表达式处理函数,所以我们只介绍以preg开头的基于perl的正则表达式。注意:在能偶使用字符串函数处理的时候,就不要使用正则表达式来处理字符串,因为字符串...
`preg_match_all`函数是PHP中用于全局正则表达式匹配的关键函数,它可以在一个字符串中查找所有符合特定模式的匹配项,并将这些匹配项存储在一个数组中。下面我们将详细讨论`preg_match_all`函数的使用、参数以及...
但是官方的文档里面没有说明这一点。... 项目中,用preg_match正则提取目标内容,死活有问题,代码测得死去活来。 后来发现“pcre.backtrack_limit ”的值默认只设了100000。 解决办法:ini_set(‘pcre.backtrack_li
在本文中,我们将探讨如何在数据采集后使用`preg_match_all`进行编码转换和正则匹配。`preg_match_all`是PHP中的一个强大函数,用于在字符串中执行全局正则表达式匹配。以下是关于这个主题的详细讲解: 1. **使用...
preg_match_all — 进行全局正则表达式匹配 说明 复制代码 代码如下:int preg_match_all ( string pattern, string subject, array matches [, int flags] ) 在 subject 中搜索所有与 pattern 给出的正则表达式匹配...
var_dump( preg_match("/[\S\b]{2,32}/",'ج') ); echo '<hr>'; var_dump( preg_match("/[\S\b]{2,32}/",'中国') ); 是不行的 需要加一个参数u,按照uniode来读码 <?php var_dump( preg_match("/[\S\b]{2,32}/u...
`preg_match_all` 是PHP中的一个正则表达式匹配函数,它可以找到所有匹配指定模式的字符串,并返回一个数组。在这个例子中,它的任务是找出所有`<img>`标签,并提取出`src`属性的值。使用的正则表达式是: ```regex...
在PHP中,`preg_match`是一个非常重要的函数,用于执行正则表达式的匹配。它能够帮助开发者在字符串中查找特定的模式,而这里的 `/u`, `/i`, 和 `/s` 是正则表达式修饰符,它们对匹配行为进行特定的控制。下面我们将...
`preg_match`函数第一个参数为正则表达式,第二个参数为要进行匹配的字符串,它会返回一个布尔值,表示正则表达式是否匹配成功,同时通过第三个参数引用的方式,如果匹配成功,可以获取匹配到的子串。一个基本的`...
preg_match_all函数具体说明大家可以查看PHP手册,本文运用 preg_match_all用于测试正则表达的效果。 实例代码: 复制代码 代码如下:$html = ‘”biuuu”>jb51.net</div><div id=”biuuu_2″>jb51.net2</div><div ...
4. **使用预编译的正则表达式**:使用`preg_quote`函数转义用户输入,并结合`preg_match_all`或`preg_replace_callback`等更安全的函数。 5. **代码审计**:定期审查代码,确保所有使用`preg_match`的地方都遵循...