news 2026/6/10 19:46:42

正则表达式 - 选择和分支

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
正则表达式 - 选择和分支

正则表达式中的选择和分支(Alternation)

选择(Alternation)是正则表达式中实现“或”逻辑的核心机制,使用竖线|来分隔多个备选模式。匹配时,正则引擎会从左到右尝试每个分支,一旦某个分支成功匹配,就停止尝试。

这让正则能同时匹配多种不同的模式,非常适合处理多格式输入、可选变体等场景。

1. 基本语法:|(分支操作符)
语法描述示例匹配说明
`ab`匹配 a 或 b`/cat
`^ab$`结合锚点限制位置`/^cat
  • |的优先级很低,几乎最低(仅高于量词后的修饰符),它会作用于整个模式的两侧。
  • 因此,通常需要用括号()来明确分支范围。
2. 结合分组控制分支范围
示例说明
`/(catdog)/`
`/^(catdog)$/i`
`/(https?ftp)😕//`
`/^(1920)\d{2}$/`
3. 多分支与优先级(从左到右)

正则引擎按分支顺序尝试,左边的优先

示例匹配结果
`/catdog
`/dogcat/` 匹配 “cat”

最佳实践:将更具体、更常见的模式放在左边,提高效率和准确性。

示例:

/^(jpeg|jpg|png|gif|webp)$/i

优先匹配 “jpeg” 而不是让 “jpg” 抢走 “jpeg” 的前三个字符。

4. 复杂分支示例
场景正则表达式说明
匹配多种日期格式`/^\d{4}-\d{2}-\d{2}$^\d{2}/\d{2}/\d{4}$
匹配邮箱提供商`/@(gmail.comyahoo.com
匹配颜色值`/^#([A-Fa-f0-9]{6}[A-Fa-f0-9]{3})$/`
匹配手机号(多种前缀)`/^1(34
5. 分支与量词的结合

量词作用于紧邻的模式,分支时需注意分组:

示例正确匹配错误理解
`/a(bcde)+f/`“abcdebcdef” 等
`/abcdef+/`“abc” 或 “defff”
`/(ab)+(cd)+/`“abab” 或 “cdcd”
6. 实际应用场景
场景正则示例用途
验证多种图片格式`/.(jpe?gpng
匹配美式/英式拼写`/colorcolour/i`
解析日志级别`/^(ERRORWARN
匹配 IPv4 地址(简化版)`/^((\d{1,2}1\d{2}
去除多种空白`/\s+
7. 注意事项
  • 性能:分支过多或过长可能导致回溯过多,影响性能。尽量将公共部分提取到分支外。
    示例优化:
    坏:/apple|application|apply/
    好:/appl(e|ication|y)/

  • 捕获组:如果你需要捕获分支匹配的内容,使用捕获组(cat|dog);如果不需要,用非捕获组(?:cat|dog)提高性能和清晰度。

  • 空分支/a|/可以匹配 “a” 或空字符串(某些引擎允许),需谨慎。

选择和分支是正则表达式实现“多路匹配”的核心,结合分组、量词和锚点,能处理非常复杂的模式变体。掌握它后,你能轻松应对现实中多种格式并存的文本处理需求!

如果你有具体格式需要匹配(如多种时间格式、日志解析等),欢迎提供例子,我可以帮你设计最优正则。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 14:01:40

10、跨平台应用评论功能开发指南

跨平台应用评论功能开发指南 在开发跨平台应用时,集成评论功能是一项常见且重要的任务。本文将详细介绍如何在应用中实现评论的加载、显示、添加等功能,同时处理跨平台的兼容性问题。 1. 加载评论 首先,我们需要使用空的集合对象 comments 进行查询。在 loadComments …

作者头像 李华
网站建设 2026/6/10 15:48:01

webman框架终极指南:解锁PHP异步编程新境界

在当今高并发的互联网时代,PHP开发者面临着前所未有的性能挑战。webman框架作为基于Workerman开发的超高性能PHP框架,以其异步非阻塞架构彻底改变了传统PHP应用的性能表现。本文将深入探讨webman框架的核心机制、实战应用和性能优化策略,帮助…

作者头像 李华
网站建设 2026/6/10 3:15:13

13、使用Titanium构建跨平台应用中的用户账户与好友功能

使用Titanium构建跨平台应用中的用户账户与好友功能 1. 用户账户集成 在应用开发中,用户账户的集成是一个重要环节。这里我们主要探讨如何通过Facebook账户进行用户登录和账户信息更新。 1.1 Facebook登录处理 当用户使用Facebook登录时,需要进行一系列操作来确保用户账户…

作者头像 李华
网站建设 2026/6/10 15:48:06

股票预测模型性能监控与自动重训练完整指南

股票预测模型性能监控与自动重训练完整指南 【免费下载链接】Stock-Prediction-Models Gathers machine learning and deep learning models for Stock forecasting including trading bots and simulations 项目地址: https://gitcode.com/gh_mirrors/st/Stock-Prediction-M…

作者头像 李华
网站建设 2026/6/10 16:18:17

SVG Crowbar:浏览器原生SVG提取的终极解决方案

SVG Crowbar:浏览器原生SVG提取的终极解决方案 【免费下载链接】svg-crowbar Extracts an SVG node and accompanying styles from an HTML document and allows you to download it all as an SVG file. 项目地址: https://gitcode.com/gh_mirrors/sv/svg-crowba…

作者头像 李华
网站建设 2026/6/10 15:54:19

PaddleX 3.0快速上手:零基础打造智能AI应用的全流程攻略

想要快速构建AI应用却不知从何开始?PaddleX 3.0就是你的最佳选择!作为飞桨生态中的明星工具,它让AI开发变得前所未有的简单和高效。无论你是编程新手还是资深开发者,都能在这里找到属于自己的AI解决方案。 【免费下载链接】Paddle…

作者头像 李华