PHP匹配连续的数字或字母的正则表达式

正则表达式的写法规则:"/规则需要写在2个斜杠中间/"

  • . :小数点)用于匹配除换行符之外的所有字符。

  • \s:反斜杠小写s)用于匹配单个空格符,包括tab键和换行符;

  • \S:反斜杠大写S)用于匹配除单个空格符之外的所有字符;

  • \d:反斜杠d)用于匹配从0到9的数字;也可以这样写:[0-9]

  • \w:反斜杠小写w)用于匹配字母,数字或下划线字符;

  • \W:反斜杠大写W)用于匹配所有与\w不匹配的字符;

元字符包括: +*?

元字符理解起来容易混淆,所以我在后面做了代码结果截图


代码如下:

“+”元字符规定其前导字符必须连续出现一次或多次

= 比如/es+/
与“tesseessssseast12354haeasashaha”字符串相匹配,首先要与第一个字母e匹配,然后匹配s,s必须出现一次或多次,请看实例截图。

“*”元字符规定其前导字符必须出现零次或连续多次

= 比如/es*/
与“tesseessssseast12354haeasashaha”字符串相匹配,首先与第一个字母e匹配,后面的s出现零次或者连续出现,看实例。

“?”元字符规定其前导对象必须连续出现零次或一次

= 比如/es?/
与“tesseessssseast12354haeasashaha”字符串相匹配,首先与第一个字母e匹配,后面的s出现零次或者最多出现一次(就是最后一个字母s不重复出现)。

示例代码:


代码如下:

$str = "tesseessssseast12354haeasashaha";
echo "=====".$str."
";
echo "/es+/:".preg_replace("/es+/","-\\0-",$str)."
";
echo "/es*/:".preg_replace("/es*/","-\\0-",$str)."
";
echo "/es?/:".preg_replace("/es?/","-\\0-",$str)."
";
?>

执行结果截图:

另外如果觉得元字符“+*?”比较难理解可以用这种{ }方法代替:

比如es*我们可以写成es{0,},而es+我们可以写成es{1,},es?可以写成es{0,1},注意:当不确定次数的时候就不用写(也不用空格)。

当然我们要指定出现多少次的可以写成这样:es{3}表示s出现3次

举一反三:

比如要替换连续多个空格为一个空格,我可以这样写:preg_replace("/\s+/"," ",$str);
比如要找出字符串中的数字(整数)preg_replace("/\d+/", "(\\0)", $str);   \\0是表示符合规则的字符串值

比如要找出字符串中的带小数点的数字preg_replace("/\d+\.\d+/", "(\\0)", $str); //这里的“\.”表示输出小数点

找出由字母组成的字符串:preg_replace("/[a-zA-Z]+/", "(\\0)", $str)

找出由(字母、数字混合)组成的字符串:preg_replace("/([a-zA-Z]|\d)+/", "(\\0)", $str)

正则表达式中“或”运算,使用 “ | ”

例如上面的例子:找出由(字母或数字)混合组成的字符串([a-zA-Z]|\d) 也可以这样写([a-zA-Z]|[0-9])

^”出现在 “[ ]”内时就被视做否定运算符;[^0-9]表示除了数字之外的任何字符。

而当“^”位于“[ ]”之外,或没有“[ ]”时,则应当被视做定位符。

定位符的意思就是比如:“^The”:开头一定要有”The”字符串;类似的:“en$”:$符号表示必须是en结尾。

其实认真看一遍就会发现正则表达式还是挺简单的,除非是我写的教程真的有问题。

(0)

相关推荐

  • 正则匹配密码只能是数字和字母组合字符串功能【php与js实现】

    本文实例讲述了正则匹配密码只能是数字和字母组合字符串功能.分享给大家供大家参考,具体如下: 密码要求: 1. 不能全部是数字 2. 不能全部是字母 3. 必须是数字和字母组合 4. 不包含特殊字符 5. 密码长度6-30位的字符串 /** * @desc get_pwd_strength()im:根据密码字符串判断密码结构 * @param (string)$mobile * return 返回:$msg */ function get_pwd_strength($pwd){ if (strle

  • PHP正则匹配中英文、数字及下划线的方法【用户名验证】 原创

    本文实例讲述了PHP正则匹配中英文.数字及下划线的方法.分享给大家供大家参考,具体如下: 一.问题: 对于用户注册时的用户名要求由中英文.数字或下划线组成,不得含有其他字符. 二.解决方法: 针对输入字符进行中英文.数字及下划线的正则验证即可. 代码如下: $username='我们jb51.net@#--^&*'; $preg='/[\w\x{4e00}-\x{9fa5}]+/u'; //$preg='/[\x80-\xff_\w]+/u'; preg_match($preg,$usernam

  • php正则表达式中的非贪婪模式匹配

    一般情况下,正则表达式的匹配是贪婪模式的,比如下面这个例子: 字符串:....src="http://www.bloghome.cn/1.mp3" type="application/x-mplayer2" .... 要求的结果:http://www.bloghome.cn/1.mp3 如果匹配表达式写为:/src="(.*)"/,则得不到正确的结果,因为最后一个双引号的匹配是贪婪模式的. 解决办法:匹配表达式写为: /src="(.*

  • php正则表达匹配中文问题分析小结

    复制代码 代码如下: $str = '中华人民共和国123456789abcdefg'; echo preg_match("/^[u4e00-u9fa5_a-zA-Z0-9]{3,15}$",$strName); 运行一下上面这段代码,看会有什么提示信息? Warning: preg_match(): Compilation failed: PCRE does not support L, l, N, P, p, U, u, or X at offset 3 in F:wwwrootp

  • php匹配网址的正则 几乎可以匹配任何网址

    比较简单的 $str = ''; $isMatched = preg_match('/^^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+$/', $str, $matches); var_dump($isMatched, $matches); 几乎可以匹配任何网址: ^((https?|ftp|news):\/\/)?([a-z]([a-z0-9\-]*[\..])+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int

  • 关于php正则匹配汉字的方法介绍

    php正则匹配汉字! /^[\x{4e00}-\x{9fa5}]+$/u 以上这个正则表达式就是困扰了很多php程序员的匹配汉字的正则表达式 大家可能会觉得很简单,实际上不同编码,不同程序语言,都有些细微的出入,稍不注意就得不到正确的结果. 下面是utf-8编码的例子:$str = "汉字";if (preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str)) {print("该字符串全部是中文");} else {

  • 正确的PHP匹配UTF-8中文的正则表达式

    我以前一直用这个 复制代码 代码如下: preg_match('~[\x7f-\xff]+~is', $string, $tmp); 今天才发现,上面这个也会匹配到一些欧洲国家的字符 应该用下面这个,注意修正符 u 复制代码 代码如下: preg_match('~[\x{4e00}-\x{9fa5}]+~u', $string, $tmp);

  • php与javascript正则匹配中文的方法分析

    本文实例讲述了php与javascript正则匹配中文的方法.分享给大家供大家参考,具体如下: php中正则匹配utf-8中文: (重点是:[\x{4e00}-\x{9fa5}]+) $str = "我们"; if (preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str,$arr)) { print("该字符串全部是中文"); echo '<pre>'; print_r($arr); } else {

  • PHP正则匹配图片并给图片加链接详解

    正则: 复制代码 代码如下: $newstext=preg_replace(preg_replace('/(<img[^>]+src\s*=\s*"?([^>"\s]+)"?[^>]*>)/im', '<a href="$2″>$1</a>', $newstext); 解说: 1.preg_replace和str_replace的区别: str_replace只是纯字符替换,而preg_replace才是正则替换

  • php用正则表达式匹配中文实例详解

    在php中汉字正则可能有些朋友觉得很简单,但是在使用时会发现在gbk编码与uft8编码可能会有点区别哦,下面小编来介绍一下.gbk编码下汉字正则 1.判断字符串是否全是汉字 复制代码 代码如下: <?php    $str = '全部是汉字测试';    if (preg_match_all("/^([x81-xfe][x40-xfe])+$/", $str, $match)) {        echo '全部是汉字';      } else {        echo '不

  • php用正则表达式匹配URL的简单方法

    在PHP的官网上看到的parse_url()函数的替代方案.结果和parse_url()函数差不多,是使用正则实现的.URI 是 Web上可用的每种资源 - HTML文档.图像.视频片段.程序等 - 由一个通用资源标志符(Uniform Resource Identifier, 简称"URI")进行定位. 对象分组: 复制代码 代码如下: ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?12            3 

  • php正则匹配文章中的远程图片地址并下载图片至本地

    使用php的正则表达式来实现: $content = '这里是文章内容,这里插入一张图片测试 <img src="XXXXXXXXXXXXXXXXXXXX">'; $content = stripslashes ( $content ); $img_array = array (); // 匹配所有远程图片 preg_match_all ( "/(src|SRC)=["|'| ]{0,}(http://(.*).(gif|jpg|jpeg|bmp|png

随机推荐