揭秘PHP正则表达式陷阱:5个常见错误及高效避坑方案

第一章:PHP正则表达式基础概述

正则表达式是一种强大的文本处理工具,广泛应用于字符串匹配、查找、替换等场景。在PHP中,通过PCRE(Perl Compatible Regular Expressions)扩展提供了完整的正则表达式支持,使得开发者能够高效地处理复杂的字符串操作。

核心函数介绍

PHP中常用的正则表达式函数主要包括:
  • preg_match():执行正则匹配,返回是否找到一次匹配
  • preg_match_all():查找所有匹配项
  • preg_replace():执行正则替换
  • preg_split():使用正则表达式分割字符串

基本语法结构

正则表达式通常由分隔符、模式和修饰符组成。例如:
// 匹配邮箱地址
$pattern = '/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/';
$email = 'user@example.com';
if (preg_match($pattern, $email)) {
    echo "邮箱格式正确";
}
// 输出:邮箱格式正确
上述代码中,^ 表示字符串开始,$ 表示结束,中间部分定义了合法邮箱的字符规则。

常用元字符与含义

元字符说明
.匹配任意单个字符(除换行符)
*匹配前一个字符0次或多次
+匹配前一个字符1次或多次
?匹配前一个字符0次或1次
\d匹配数字,等价于 [0-9]
graph LR A[开始] --> B{输入字符串} B --> C[编译正则模式] C --> D[执行匹配或替换] D --> E[返回结果] E --> F[结束]

第二章:常见正则表达式错误解析

2.1 错误一:未转义特殊字符导致匹配失败

在正则表达式中,特殊字符如 .、*、+、?、(、) 等具有特定语义,若待匹配文本中包含这些字符但未进行转义,将导致匹配结果异常或语法错误。
常见易错场景
例如,尝试匹配字符串 example.com 时,若直接使用正则 example.com,其中的点号会被解释为“任意字符”,从而错误匹配 exampleacom 等非目标字符串。
解决方案:使用反斜杠转义
example\.com
通过添加反斜杠对点号进行转义,确保其作为字面量参与匹配。其他特殊字符同理,如匹配括号需写作 $data$。
  • 元字符必须在字面意义使用时进行转义
  • 不同语言中转义方式一致,但字符串本身可能需双重转义(如 Java)

2.2 错误二:贪婪匹配引发的性能问题

在正则表达式处理中,贪婪匹配是默认行为,它会尽可能多地匹配字符。当模式涉及大量文本或嵌套结构时,这种策略可能导致回溯爆炸,显著降低执行效率。
贪婪与非贪婪模式对比
  • 贪婪模式:.* 会一直匹配到字符串末尾,再逐步回退
  • 非贪婪模式:.*? 则一旦满足条件立即停止匹配
性能差异示例
.*<\/div>
该表达式在匹配嵌套 HTML 时,会从第一个 <div> 一路扫描到最后一个 </div>,导致大量无效回溯。 使用非贪婪版本可优化:
.*?<\/div>
此模式逐字符推进,找到首个闭合标签即终止,大幅减少回溯次数。
实际影响
模式匹配方式时间复杂度
贪婪最大范围后回退O(n²)
非贪婪最小满足即停O(n)

2.3 错误三:忽略定界符引发的语法错误

在编写脚本或配置文件时,定界符(如引号、括号、分号)的遗漏是常见的语法错误来源。这类问题常导致解析失败或不可预期的行为。
常见定界符错误示例

echo "Hello, World!
上述代码缺少闭合双引号,shell 会持续等待命令结束,引发语法错误。正确写法应为:

echo "Hello, World!"
该命令通过双引号完整包裹字符串,并以换行结束语句,符合 shell 语法规范。
预防措施
  • 使用支持语法高亮的编辑器,便于识别未闭合的定界符;
  • 启用静态检查工具,如 ShellCheck,自动检测缺失的引号或括号;
  • 编写代码时遵循一致的格式规范,提升可读性与可维护性。

2.4 错误四:模式修饰符使用不当造成逻辑偏差

在正则表达式中,模式修饰符(如全局匹配 g、忽略大小写 i、多行模式 m)直接影响匹配行为。若使用不当,可能导致意外的匹配结果或遗漏关键数据。
常见问题示例
例如,在JavaScript中提取所有邮箱时错误地省略了全局修饰符:

const text = "contact: alice@example.com, support@domain.org";
const regex = /[\w.-]+@[\w.-]+\.\w+/; // 缺少 'g' 修饰符
const matches = text.match(regex);
console.log(matches[0]); // 仅输出 alice@example.com
由于缺少 g 修饰符,正则表达式只返回第一个匹配项,导致后续邮箱被忽略。
修饰符影响对照表
修饰符作用典型误用后果
g全局匹配仅匹配首个结果
i忽略大小写大小写敏感漏匹配
m多行模式跨行锚点失效
正确使用修饰符可避免逻辑偏差,确保模式按预期覆盖全部目标文本。

2.5 错误五:过度依赖正则处理非文本结构数据

在处理JSON、XML等结构化数据时,部分开发者倾向于使用正则表达式提取信息,这是一种高风险做法。结构化数据具有嵌套、转义和类型语义,而正则无法可靠解析其语法树。
典型问题示例
尝试用正则从JSON中提取字段极易出错:

const data = '{"name":"John","age":30,"city":"New York"}';
const match = data.match(/"city":"([^"]+)"/);
console.log(match[1]); // 输出: New York
该代码在简单场景下有效,但当JSON存在嵌套引号或换行时将失效。
推荐解决方案
应使用语言内置的解析器:
  • JSON.parse() 解析JSON字符串
  • DOMParser 处理XML文档
  • 专用库如xml2js或cheerio
这些工具能正确构建AST,避免注入与格式错误。

第三章:高效避坑实践策略

3.1 使用preg_quote安全转义动态字符串

在构建正则表达式时,若模式中包含用户输入或动态字符串,未加处理可能引发语法错误或安全漏洞。PHP 提供 preg_quote() 函数,用于对特殊字符进行转义,确保其作为字面量参与匹配。
基本用法

$keyword = "example.com?search=value";
$safePattern = '/' . preg_quote($keyword, '/') . '/';
echo $safePattern; // 输出: /example\.com\?search=value/
上述代码中,preg_quote 第二个参数指定分隔符(如斜杠),函数会自动转义该字符及正则元字符,如 .、?、* 等。
常见需转义的字符
  • .(点):匹配任意字符,需转义为字面量
  • *、+、?:量词符号
  • ^、$:锚定行首/行尾
  • [、]、(、)、{、}:分组与字符类
正确使用 preg_quote 可避免正则注入风险,是动态构建安全模式的关键步骤。

3.2 合理利用非贪婪模式优化匹配效率

在正则表达式中,贪婪模式默认尽可能多地匹配字符,而**非贪婪模式**通过在量词后添加 ? 限定符,实现最小匹配,显著提升匹配效率。
非贪婪模式语法示例

.*?    # 匹配任意字符,但尽可能少
\d+?   # 匹配数字,一旦满足即停止
上述模式在解析包含多个标签的HTML时尤为高效,例如提取 <div>内容</div> 中的内容,使用 <div>(.*?)</div> 可避免跨标签误匹配。
性能对比分析
  • 贪婪模式:回溯多,易造成性能瓶颈
  • 非贪婪模式:减少回溯次数,提升解析速度
合理使用非贪婪模式,能在复杂文本中精准定位目标子串,是优化正则性能的关键手段之一。

3.3 正确选择和使用定界符避免分隔冲突

在数据解析与文本处理中,定界符的选择直接影响字段的正确分割。不恰当的定界符可能导致数据截断或解析错误,尤其在包含特殊字符的场景下。
常见定界符对比
  • 逗号 (,):CSV常用,但易与数值或地址中的逗号冲突
  • 制表符 (\t):视觉清晰,适合日志文件
  • 竖线 (|):较少出现在内容中,适合结构化输出
  • 不可见字符:如\x01,几乎不会与业务数据冲突
代码示例:使用安全定界符解析日志
package main

import (
    "fmt"
    "strings"
)

func main() {
    logLine := "2023-01-01\x01INFO\x01User login successful"
    fields := strings.Split(logLine, "\x01")
    fmt.Printf("Time: %s, Level: %s, Message: %s\n", 
        fields[0], fields[1], fields[2])
}
该代码使用ASCII控制字符\x01作为定界符,极大降低与业务数据冲突概率。Split函数按\x01分割字符串,确保各字段完整提取。

第四章:典型应用场景与优化技巧

4.1 验证邮箱与手机号:精准模式设计

在用户身份验证体系中,邮箱与手机号的校验是安全控制的第一道防线。为确保输入数据的合法性与唯一性,需采用精准的正则匹配与异步去重检查。
邮箱验证正则表达式

const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
该正则确保邮箱包含合法的本地部分、@符号、域名及顶级域,避免特殊字符注入与格式错误。
手机号验证逻辑(中国大陆)

const phoneRegex = /^1[3-9]\d{9}$/;
匹配以1开头、第二位为3-9、总长11位的手机号,覆盖主流运营商号段。
校验策略对比
方式实时性准确性适用场景
前端正则高中初步过滤
后端验证中高最终校验

4.2 提取HTML标签内容:避免正则解析陷阱

在处理HTML内容提取时,开发者常误用正则表达式匹配标签。尽管看似便捷,但HTML是递归结构,正则难以正确处理嵌套、属性、注释等复杂情况,极易导致解析错误或安全漏洞。
常见正则陷阱示例
<div>(.*?)</div>
该模式无法应对嵌套div或属性干扰,如:<div class="outer"><div>nested</div></div> 会导致捕获不完整。
推荐解决方案:使用HTML解析器
  • Python中应使用BeautifulSoup或lxml库
  • JavaScript环境下优先选择DOM API或cheerio
  • 避免字符串操作替代结构化解析
from bs4 import BeautifulSoup
html = '<div>Hello</div>'
soup = BeautifulSoup(html, 'html.parser')
print(soup.div.text)  # 输出: Hello
该代码利用BeautifulSoup构建DOM树,精准定位标签并提取文本内容,规避了正则的结构性缺陷。

4.3 替换敏感词:性能与准确性的平衡

在敏感词过滤系统中,如何在保证高准确性的同时维持低延迟是核心挑战。正则表达式虽灵活,但在大规模文本处理时性能较差。
基于 Trie 树的匹配算法
使用前缀树(Trie)结构预加载敏感词库,可显著提升匹配效率。
// 构建 Trie 节点
type TrieNode struct {
    children map[rune]*TrieNode
    isEnd    bool
}

func (t *TrieNode) Insert(word string) {
    node := t
    for _, char := range word {
        if node.children[char] == nil {
            node.children[char] = &TrieNode{children: make(map[rune]*TrieNode)}
        }
        node = node.children[char]
    }
    node.isEnd = true
}
上述代码构建了一个支持 Unicode 的 Trie 结构,插入时间复杂度为 O(m),其中 m 为词长。查询时逐字符遍历文本,实现单次扫描多模式匹配。
性能对比
方法平均响应时间(ms)准确率
正则匹配12.496%
Trie 树2.198%
通过空间换时间策略,Trie 树在保持高准确率的同时大幅降低处理延迟,适用于实时内容审核场景。

4.4 日志分析中多行匹配的处理方案

在日志分析过程中,某些日志条目(如Java异常堆栈)会跨越多行输出,导致单行解析模式失效。为准确提取完整日志事件,需采用多行合并策略。
基于正则的多行合并
常用工具如Logstash和Fluentd支持通过正则表达式识别日志起始行,将后续非匹配行合并至前一条记录:
filter {
  multiline {
    pattern => "^\s+at"
    what => "previous"
    negate => true
  }
}
上述配置表示:若某行以空白字符后接“at”开头(典型堆栈跟踪),则将其归入上一行。`negate => true` 表示取反匹配,即不以该模式开头的为新日志起点。
时间戳与上下文关联
另一种方法是结合时间戳与进程ID进行上下文关联,通过滑动窗口聚合相近时间、相同来源的连续日志行,适用于无固定格式的日志流。

第五章:总结与最佳实践建议

性能监控与调优策略
在高并发系统中,持续的性能监控至关重要。建议集成 Prometheus 与 Grafana 实现指标采集与可视化,重点关注 GC 次数、堆内存使用和协程数量。
  • 定期执行 pprof 分析,定位内存泄漏或 CPU 瓶颈
  • 设置告警规则,如 Goroutine 数量突增超过 1000
  • 使用 trace 工具分析调度延迟
错误处理与日志规范
Go 项目中应统一错误封装结构,避免裸露的 errors.New。推荐使用 fmt.Errorf 带上下文包装:

if err != nil {
    return fmt.Errorf("failed to process order %d: %w", orderID, err)
}
日志需包含请求 ID、时间戳和层级标记,便于链路追踪。
依赖管理与版本控制
使用 Go Modules 时,生产环境应锁定依赖版本并定期审计。可通过以下命令检查漏洞:

go list -m all | nancy sleuth
实践项推荐方案频率
依赖更新go get -u patch 版本每月
安全扫描govulncheck每次发布前
部署与配置分离
通过环境变量注入配置,避免硬编码数据库连接信息。Kubernetes 中可结合 ConfigMap 与 Secret 实现动态加载。

相关推荐

审稿人看了直呼内行:多组学整合分析——科研小白进阶之路

多组学,多平台分析解决方案

pysonger的博客 3944

正则表达式错误积累

"|"的作用是分割不同的规则,而不是”或“运算符,不存在结合性,只是简单地将几个规则分开来。  tt="(ab)|(cd)(ef)|(aa)(bb)(cc)"; ("aabbcc".matches(tt));  ture ("abcdaa".matches(tt));  false ("ab".matches(tt));  ture ("cdefbb".matches

syfly007的专栏 801

LVGL 9.4 性能调优实战:如何通过脏区合并与tile分块,让你的嵌入式UI流畅度翻倍

本文深入探讨LVGL 9.4中的性能优化技术,重点介绍脏区合并与tile分块如何显著提升嵌入式UI流畅度。通过实战案例和源码分析,详细解析局部刷新策略、显示框架调优及性能瓶颈诊断方法,帮助开发者在STM32、ESP32等资源受限设备上实现丝滑的UI体验。

weixin_28678831的博客 450

day18笔记 错误和异常 正则表达式

一、异常和错误 1.概念 Python有两种错误很容易辨认:语法错误和异常 ​ Python 的语法错误或者称之为解析错误,是初学者经常碰到的,比如缺少冒号等 ​ 在程序运行过程中,总会遇到各种各样的错误,有的错误是程序编写有问题造成的,这种错误我们通常称之为bug,bug是必须修复的;有的错误是用户输入造成的,这种错误可以通过检查用户输入来做相应的处理;还有一类错误是完全无法在程序运行过程中预...

windmillsign的博客 433

学Simulink——基于风力发电系统的建模与仿真场景:基于自适应控制的风力发电系统输出功率调节

本文详细介绍了使用Simulink搭建风力发电系统自适应控制模型的完整流程。首先阐述了风速波动对电网的影响及自适应控制的优势,然后逐步指导创建Simulink项目、搭建系统结构(包括风速源、风轮机、发电机等模块),重点讲解了模型参考自适应控制器(MRAC)的设计步骤和参数设置方法。通过仿真分析验证了系统在风速变化时仍能保持输出功率稳定,展示了自适应控制的响应速度和鲁棒性。最后提出了引入深度学习预测、多变量控制等优化方向,为新能源领域工程师提供了实用的建模与仿真指导。

amy_mhd的博客 220

【全志V821_FoxPi】6-3 GC2083 MIPI摄像头适配

本文介绍了在全志V821芯片上适配GC2083 MIPI摄像头的方案。GC2083是一款支持1080P@30fps的高性能CMOS图像传感器,采用MIPI CSI-2接口,具有低功耗特性。文章详细列出了传感器的技术参数和工作电压要求,并提供了设备树配置示例,包括CSI接口、ISP处理单元和传感器节点的具体设置。通过快速配置命令one_gc2083_sensor或手动修改设备树即可启用该摄像头模组,适用于IPC等对图像质量有要求的嵌入式应用场景。

第四维度的博客 1925

记录一次正则表达式的错误用法

今天需要匹配文本内容中带有连续30多个问号?,用正则表达式/?{5,}进行匹配多次无果,后发现转义符应为反斜杠\,这点要特别注意。 有的时候人容易犯熟视无睹的错误。特此记载。 另外正则表达式在各种语言中的用法,详见 https://www.runoob.com/regexp/regexp-syntax.html ...

nidanqing的博客 782

YOLOv11 改进 - 即插即用 | PST金字塔稀疏Transformer:粗粒度到细粒度推理优化特征提取,提升复杂场景适应性

本文介绍了金字塔稀疏 Transformer(PST)与 YOLOv11 的结合。主流基于注意力的特征融合方法计算复杂度高、实现难度大,作者提出 PST 模块,融合粗到细令牌选择与共享注意力参数机制,在保留空间细节的同时降低计算量。该模块通过层级化注意力机制、动态令牌选择与参数共享,实现高效多尺度特征融合

魔改工程师的博客 830

正则表达式语法

首页 | 常用正则表达式 | 正则表达式测试工具 正则表达式30分钟入门教程 目录 跳过目录 本文目标如何使用本教程正则表达式到底是什么东西?入门测试正则表达式元字符字符转义重复字符类分枝条件反义分组后向引用零宽断言负向零宽断言注释贪婪与懒惰处理选项平衡组/递归匹配还有些什么东西没提到联系作者网上的资源及本文参考文献更新纪录 本文目标 30分钟内让你明白正则表达式是

goodyuedandan的博客 543

新系统申请软件著作权详细操作说明

今年八月底版权中心系统升级,新系统相对好用一些,至少不用再拿IE访问了,但是多了一项实名认证。下面介绍新系统的操作流程。 目录注册、登录和实名认证注册登录实名认证软件登记申请申请表填写鉴别材料身份证明文件权利归属证明文件其他材料提交材料变更登记 注册、登录和实名认证 首先访问版权中心系统:https://register.ccopyright.com.cn/login.html,如果老系统有账号直接登录即可,没有的话需要注册。 注册 点击注册按钮进入注册。 根据实际情况选择个人或单位,每个个人或单位只能在

Programming Talk 1万+

UG NX二次开发(C#)-建模-获取圆柱面信息(轴向、半径、深度)

获取圆柱面的信息前言一、在UG NX中面的类型有哪些?二、获取圆柱面信息的函数1.获取半径和轴向2、计算圆柱面的深度值3、测试用例总结 文章目录前言一、在UG NX中面的类型有哪些?二、获取圆柱面信息的函数1.获取半径和轴向2、计算圆柱面的深度值3、测试用例总结 前言 在一个项目中,需要遍历曲面,获得所有的圆柱面和圆柱面的信息,包括轴向、半径和圆柱面的深度。经过研究,采用uFModl.AskFaceData(face.Tag, out faceTypeInt, point, dir, box, out

GimiGimmy 4145

揭秘低代码平台中PHP插件开发的5大陷阱:90%开发者都踩过的坑

掌握低代码平台的 PHP 插件开发规范,避开常见陷阱。本文详解适用场景、安全集成与性能优化等5大关键点,提升开发效率与稳定性。90%开发者忽略的细节全解析,值得收藏。

CompiShoal的博客 932

★教程3:Simulink学习教程入门60例目录

1.订阅本教程用户可以免费获得本博任意1个(包括所有免费专栏和付费专栏)博文对应代码;2.本Simulink课程的所有案例(部分理论知识点除外)均由博主编写而成,供有兴趣的朋友们自己订阅学习使用。未经本人允许,禁止任何形式的商业用途;3.本课程除了介绍常见的Simulink模块介绍之外,我们更侧重于各种实例的完整设计介绍。从通信,控制器,图像处理,语音处理,电力系统等诸多常用领域介绍了相关案例,如果对于某个较为复杂的案例,初学者无法正确复现,也可以私信博主获得完整Simulink模型文件。

FPGA/MATLAB学习教程/源码/项目合作开发 1万+

揭秘物联网数据脏乱难题:如何用PHP脚本实现高效传感器数据净化

解决物联网传感数据脏乱难题,分享高效清洗方案。本文介绍如何用PHP脚本处理传感器数据,涵盖去噪、格式标准化与异常值过滤,适用于智能家居与工业监控场景。通过轻量级的传感数据的 PHP 清洗脚本实现自动化净化,提升数据质量与系统响应效率,值得收藏。

LearnFlow的博客 923

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Python求职自动化:模拟真实用户行为的精准岗位搜索方案

求职自动化不是简单的网页抓取,而是对招聘平台人机交互逻辑的深度建模。其核心在于理解HTTP行为指纹、页面交互节律与JD语义意图三层反爬机制,并通过Playwright实现类人操作模拟,结合LangChain完成非结构化职位描述的精准解析。该技术路径聚焦‘有效转化率’而非‘请求吞吐量’,适用于应届生海投优化、在职工程师静默换岗及Tech Lead市场调研等真实场景,本质是将Python从数据采集工具升级为具备判断力的数字求职助手。

weixin_30430169的博客 351

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

BT下载连不上?揭秘infohash与bencode校验原理

BitTorrent(BT)协议中,infohash是资源唯一标识的核心密码学哈希值,其生成依赖于严格遵循bencode编码规范的info字典原始字节流。bencode并非JSON或Base64,而是以字符前缀(i/l/d/数字:)驱动、键按字节序排序、字符串长度精确到字节的序列化格式。infohash的正确性直接决定DHT发现、Tracker通信及磁力链接有效性,任何bencode解析偏差(如字典排序错误、UTF-8编码误用、info字段截断)都将导致infohash失配,使客户端无法定位对等节点。该机制

weixin_32428571的博客 311

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

正则表达式回溯

前几天有小伙伴来求救说页面上有一个 input 框,随着用户不断输入内容,页面响应会越来越慢直到完全失去响应。 简单沟通过后得知具体场景是这样的: input 框中允许用户输入一连串逗号分隔的商品id在用户输入的过程中实时检测用户输入的内容是否符合规则,若不符合则给出提示信息 小伙伴的解决方案也很直接: 给 input 框绑定 keyup 事件。在 keyup 事件回调函数

secretx的专栏 6937

正则表达式匹配报错的情形

1、剔除文本字符串中的空格 >>> import re >>> string = "学 无 止 境" >>> print(re.sub(r'\s+','',string)) 学无止境 >>> print(re.sub(r'\s+','**',string)) 学**无**止**境 2、数字匹配 >>> num = re.findall('^\d{5}$','123456789')#不是5位数,匹配

如是我闻的博客 1337

正则表达式常见错误

如果用 [0-9]* 匹配 'a 1234 num', 备用状态是否包括 'a .1234 num'(点号代表位置) ? (p.164) 答案是否定的. 星号限定的部分总是能够匹配. 如果整个表达式都由星号控制, 它就能够匹配任何内容. 在字符串的开始位置, 传动机构对引擎进行第一次尝试时的状态, 当然算匹配成功. 在这种情况下, 正则表达式匹配 '.a 1234 num', 而且在此处结...

weixin_30256901的博客 678

错误分析—正则表达式之——————[ ]

[年-/] 被python3.6 解析为:从”年”开始到”/”结束, 然而想匹配【年 - / 】应该写为 [年/-]

it_ta0的博客 415

正则表达式——线程安全性

转载于:https://www.cnblogs.com/gaara0305/p/10103792.html

antaohui5955的博客 1037

python正则表达式错误(AttributeError: 'NoneType' object has no attribute 'group')-----「*」与「?」的使用出错

 在跟着廖雪峰老师的教程学习python正则表达式,利用正则表达式进行匹配邮箱名字时,利用match.group(1)函数遇到了下面的问题: Traceback (most recent call last): File "C:\Users\17548\Workspace\EmailZhengze.py", line 27, in &lt;module&gt; name_of_em...

小果一粒沙的博客 1万+

异常处理和正则表达式

#########异常处理###### #!/usr/bin/env python #coding:utf-8 _author_ = 'hxr' ##python的异常处理机制,try ...  expect....  finally.... try:                    ##用来把可能存在异常的代码放在该语句块中     print 'starting...

houxr的专栏 873

正则表达式和异常

java和js的编写格式不一样,java中需要转义,js中不需要。 正则表达式,是一个字符串,由一些特殊的字符组成,特殊的字符成为正则元字符。 正则元字符 x 代表字符本身x; 单独写(a 表示a)。 \ 转义字符:\ 一个\,.一个. \r\n 换行 , \t 制表位 tab。 1. 用于匹配特定字符的元字符 [] :用来匹配括号中的任何一个字符,[abc] 匹配其中一个; [^]...

weixin_43509023的博客 618
上一篇: 【PHP开源项目贡献指南】:从零到核心 contributor 的7个关键步骤
下一篇: 【PHP性能优化秘籍】:利用这6个内置特性,轻松实现高并发处理
varchat
博客等级 码龄11年 159粉丝 1993原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值