正则表达式基础内容

一、正则表达式基础内容#

1、通用原子:

  • \d : 数字。 \D : 除了数字。
  • \w : 数字,字母,下划线。\W : 除了数字,字母,下划线。
  • \s : 空白符 。 \S : 除了空白符 。

2、元字符:

  • . :除了换行以外的所有字符
  • * : 0 次或多次(匹配前面的内容)
  • ? : 0 次或 1 次(匹配前面的内容)
    • : 一次或多次(匹配前面的内容)
  • ^ : 必须以它开头。
  • $ : 必须以它结尾。
  • {n} : 恰巧出现 n 次。
  • {n,} : 大于等于 n 次。
  • {n,m} : 大于等于 n, 小于等于 m.
  • [] : 匹配中括号中的任意一个字符(是一个集合),如:[abc]即为匹配a或b或者c。
  • () : 后项引用 或者是当做一个整体。
  • [^]: 取反。
  • | : 或者
  • [-] : 代表一个范围,如[0-9],匹配即为 0123456789

3、模式修正符

  • i:不区分大小写。
  • m:将字符串通过分隔符进行分割,将字符串中的每一行分别进行匹配。
  • e: 将匹配出来的内容做一些php语法上的处理。
  • s: 修正 "." 的换行。
  • U: 取消贪婪模式。
  • x: 忽略模式中的空白符。
  • A: 必须以这个模式开头。
  • D: 修正 "$" 对 "\n" 的忽略。
  • u: 做 utf-8 中文匹配的时候使用。
  • g:该表达式可以进行全局匹配。

php 正则表达式中的 .*? 表示什么意思?#

是非贪婪模式

.*?来取消贪婪

.*会匹配后面的一切字符,就是到结束的意思
加?后就是不贪婪模式,这时要看?后边的字符是什么了,如.*?"的意思是遇到双引号则匹配结束

.*?>的意思是遇到>则匹配结束

Copy Highlighter-hljs
例如: 写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把script标记及其内容都去掉):   <?php$script="以下内容不显示:<script language='javascript'>alert('cc');</script>";  $pattern = "/<script[^>].*?>.*?</script>/si"; echopreg_replace( $pattern ,"替换内容", $script);  ?>

二、后项引用#

Copy Highlighter-hljs
$str = '<b>abcd</b>'; $pattern = '/<b>(.*)<\/b>/'; preg_replace(pattern, '\\1', $str)

如果想只去除掉b标签,只保留里面的字符串,这里就需要用到后项引用。怎么样后项引用呢,就是将.*括起来,然后在匹配的时候,写上 \1 ,\1 代表第一个括号里面匹配到的内容,当然为了防止 \1 转义掉,所以我们使用\\1

写正则表达式的思路#

  1. 先写出一个要匹配的字符串
  2. 自左向右的顺序使用正则表达式的院子和元字符进行拼接
  3. 最终加入模式修正符

例子:#

  1. 使用utf-8匹配中文
Copy Highlighter-hljs
$pattern = '/[\x{4e00}-\x{9fa5}]+/u';
  1. 判断手机号码
Copy Highlighter-hljs
$pattern = "/^1[34578]\d{9}$/";
  1. 邮箱正则表达式
Copy Highlighter-hljs
$pattern = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/";
posted @   caibaotimes  阅读(255)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示
CONTENTS