news 2026/5/8 20:06:47

正则表达式 - 位置匹配

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
正则表达式 - 位置匹配

正则表达式中的位置匹配(锚点)

正则表达式不仅能匹配字符,还能匹配位置(也称为锚点或锚定)。位置匹配不消耗任何字符,只指定匹配必须发生在字符串的特定位置(如开头、结尾、单词边界等)。这在验证输入、精确提取文本时非常有用。

常见位置匹配元字符(锚点)
元字符描述示例匹配说明
^匹配字符串(或行)的开头。在多行模式(m标志)下,匹配每行的开头。/^abc/匹配以 “abc” 开头的字符串,如 “abcde” 中的 “abc”,但不匹配 “xabc”。
$匹配字符串(或行)的结尾。在多行模式下,匹配每行的结尾。/abc$/匹配以 “abc” 结尾的字符串,如 “xyzabc” 中的 “abc”。
^...$匹配整个字符串(常用于完整验证)。/^\d{3}-\d{4}$/匹配完整的 “123-4567”,但不匹配 “abc123-4567def”。
\b匹配单词边界(单词字符\w和非单词字符\W之间的位置)。/\bcat\b/匹配独立的 “cat”(如 “the cat sat”),但不匹配 “scatter” 中的 “cat”。
\B匹配非单词边界\b的反面)。/\Bcat\B/匹配 “scatter” 中的 “cat”,但不匹配独立的 “cat”。
\A匹配字符串的绝对开头(不受多行模式影响)。/\Aabc/只匹配整个字符串开头的 “abc”,类似于^但更严格。
\z匹配字符串的绝对结尾(不受换行影响)。/abc\z/只匹配整个字符串结尾的 “abc”。
\Z匹配字符串结尾(可能在最后一个换行前)。/abc\Z/类似于$,但在某些引擎中处理换行不同。
高级位置匹配:环视(Lookaround)

环视是一种零宽度断言,只匹配位置,不消耗字符。常用于“前后条件匹配”。

元字符描述示例匹配说明
(?=p)正向前瞻:当前位置后面必须匹配p/\d+(?=px)/匹配后面跟 “px” 的数字,如 “12px” 中的 “12”。
(?!p)负向前瞻:当前位置后面不能匹配p/\d+(?!px)/匹配后面不跟 “px” 的数字,如 “12em” 中的 “12”。
(?<=p)正向后瞻:当前位置前面必须匹配p(部分引擎支持)。/(?<=\$)\d+/匹配前面有 “$” 的数字,如 “$100” 中的 “100”。
(?<!p)负向后瞻:当前位置前面不能匹配p/(?<!\$)\d+/匹配前面无 “$” 的数字。
示例应用
  1. 验证完整字符串(如手机号):

    /^\d{11}$/

    只匹配正好 11 位数字的字符串。

  2. 匹配独立单词

    /\bhello\b/

    匹配 “hello world” 中的 “hello”,但不匹配 “hello world” 中的 “hello”(如果有连字符等)。

  3. 千位分隔符(使用非捕获位置):

    /(?<=\d)(?=(\d{3})+$)/g

    在数字中插入逗号,如 “1234567” → “1,234,567”。

注意事项
  • 不同语言/引擎(如 JavaScript、Python、Java、Perl)对锚点的实现略有差异(如多行模式m的行为)。
  • 位置匹配是零宽度的,不会影响捕获组或替换结果。
  • 结合标志使用:如/^abc$/m在多行文本中匹配每行以 “abc” 开头且结尾的行。

位置匹配是正则表达式精确控制的核心,掌握它能让你的模式更强大、更高效!如果有具体示例或语言需求,可以提供更多细节。

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

6、跨平台应用开发:从理论到实践

跨平台应用开发:从理论到实践 1. 跨平台应用开发基础 在跨平台应用开发中,Model - View - Controller(MVC)模式是核心架构,同时,Widget 框架可用于开发完全自包含的可重用组件。以下是一个使用 Alloy 创建 Widget 的示例代码: <Alloy><Window id="mai…

作者头像 李华
网站建设 2026/5/1 13:43:50

正则表达式 - 断言

正则表达式中的断言&#xff08;Assertions&#xff09; 断言&#xff08;Assertions&#xff09;是正则表达式中一类零宽度的匹配机制&#xff0c;它们只检查当前位置是否满足特定条件&#xff0c;不消耗任何字符&#xff0c;也不参与捕获。断言分为环视&#xff08;Lookarou…

作者头像 李华
网站建设 2026/5/6 15:32:00

CMake 构建流程

CMake 构建流程详解 CMake 的构建过程分为两个主要阶段&#xff1a;配置阶段&#xff08;Configure&#xff09; 和 构建阶段&#xff08;Build&#xff09;&#xff0c;可选还有测试阶段&#xff08;Test&#xff09; 和 安装阶段&#xff08;Install&#xff09;。理解这个流…

作者头像 李华
网站建设 2026/5/2 20:09:25

16、地图与位置功能开发指南

地图与位置功能开发指南 1. 地图与位置功能基础 在开发过程中,有一个新函数会接收 _coords 参数,并将这些值作为自定义字段传递给 Appcelerator 云服务的照片对象。Appcelerator 云服务支持对照片对象进行地理定位查询,这样就能利用存储在照片自定义字段中的信息来查找照…

作者头像 李华
网站建设 2026/5/6 7:36:23

终极SQL查询压力测试指南:SqlQueryStress完整使用教程

终极SQL查询压力测试指南&#xff1a;SqlQueryStress完整使用教程 【免费下载链接】SqlQueryStress SqlQueryStress 是一个用于测试 SQL Server 查询性能和负载的工具&#xff0c;可以生成大量的并发查询来模拟高负载场景。 通过提供连接信息和查询模板&#xff0c;可以执行负载…

作者头像 李华
网站建设 2026/5/1 4:19:21

PaddlePaddle镜像集成飞桨框架最新版,全面支持Transformer结构

PaddlePaddle镜像集成飞桨框架最新版&#xff0c;全面支持Transformer结构 在中文自然语言处理的实际落地过程中&#xff0c;开发者常常面临一个尴尬的局面&#xff1a;模型设计得再精巧&#xff0c;一旦进入部署阶段&#xff0c;就可能因为环境依赖错乱、CUDA版本不匹配或Pyth…

作者头像 李华