正则表达式中的选择和分支示例详解

 更新时间:2026年11月01日 08:40:09   作者:yingjuxia.com  
很多人看正则表达式就像看天文数字一样,电话号码、邮箱的正则表达式,上网复制一下粘贴下来就搞定了,完全不知道为什么这么写,这篇文章主要介绍了正则表达式中选择和分支的相关资料,需要的朋友可以参考下

正则表达式中的选择和分支(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” 或空字符串(某些引擎允许),需谨慎。

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

到此这篇关于正则表达式中选择和分支的文章就介绍到这了,更多相关正则表达式选择和分支内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

最新评论