JavaScript 正则词边界 \b 深度实战:从 Modern JavaScript Tutorial 的 HH:MM 时间查找任务说起
文档/教程前端【免费下载链接】en.javascript.infoModern JavaScript Tutorial项目地址https://gitcode.com/gh_mirrors/en/en.javascript.info点击查看免费下载本指南以 Modern JavaScript Tutorialen.javascript.info正则表达式章节中的词边界word boundary练习为核心系统讲解\b的判定原理、三种边界位置、与数字结合的用法及其对非拉丁字母的局限并逐层拆解 查找 HH:MM 格式时间 任务的题意与官方题解帮助读者掌握用\b精确定位独立词与独立数字片段的实战能力。练习定位仓库中的词边界章节在仓库的9-regular-expressions/06-regexp-boundary目录下包含了完整的词边界教学章节与配套练习章节正文article.md系统讲解\b的定义、三种边界位置与使用示例配套练习1-find-time-hh-mm子目录包含 task.md任务描述与 solution.md官方题解。本练习是词边界知识点的首个实战任务用于验证读者是否真正理解了\b作为零宽断言zero-width assertion的语义——它不消耗任何字符只在特定位置上做条件判断。词边界\b是什么一种位置测试与^字符串开头和$字符串结尾一样\b也是一种测试test而不是匹配某个具体字符的模式。当正则引擎负责执行正则搜索的程序模块遇到\b时它会检查当前字符串位置是否恰好是一个词边界。按照章节原文共有三种位置满足词边界条件字符串开头且第一个字符是词字符\w字符串内部两个字符之间一侧是词字符\w另一侧不是字符串结尾且最后一个字符是词字符\w。其中\w指拉丁字母a-z含大写、数字0-9和下划线_。换句话说\b要求当前位置两侧恰好一边是词字符、一边是非词字符或字符串边界。经典示例\bJava\b考虑字符串subject:Hello, Java!pattern:\bJava\b能匹配其中的独立单词Java但不会匹配subject:Hello, JavaScript!中的Java因为Java后面紧跟着词字符S不存在边界。alert( Hello, Java!.match(/\bJava\b/) ); // Java alert( Hello, JavaScript!.match(/\bJava\b/) ); // null在字符串Hello, Java!中下列位置恰好对应\b因此模式pattern:\bHello\b也能匹配成功匹配过程如下字符串开头匹配第一个\b首字符H是词字符接着匹配单词Hello在o与逗号之间再次命中\b一侧是词字符o另一侧是逗号。所以\bHello\b匹配成功而\bHell\b匹配失败l之后紧跟着o没有边界\bJava!\b同样失败感叹号不是词字符\wJava!内部不存在边界。alert( Hello, Java!.match(/\bHello\b/) ); // Hello alert( Hello, Java!.match(/\bJava\b/) ); // Java alert( Hello, Java!.match(/\bHell\b/) ); // null (no match) alert( Hello, Java!.match(/\bJava!\b/) ); // null (no match)\b与数字结合匹配独立的两位数\b不仅能用于单词同样适用于数字。章节中给出的核心示例是pattern:\b\d\d\b——查找独立的两位数即两侧被非\w字符空格、标点、字符串开头/结尾包围的两位数。alert( 1 23 456 78.match(/\b\d\d\b/g) ); // 23,78 alert( 12,34,56.match(/\b\d\d\b/g) ); // 12,34,56在1 23 456 78中23两侧是空格、78位于字符串结尾均满足边界条件而456中的45与56因紧邻\w字符而被排除在12,34,56中逗号属于非\w字符因此三个两位数全部命中。这里使用了g标志全局搜索让.match()返回所有匹配结果组成的数组。这正是解决 HH:MM 时间查找任务的核心技巧基础。重要局限\b不适用于非拉丁字母章节末尾专门给出了一条警告\b的判定依赖\w而\w仅涵盖拉丁字母、数字和下划线。因此对西里尔字母、汉字等非拉丁字符\b无法正常工作。例如中文文本中上午09点这类场景\b可能不会在汉字与数字之间判定出边界。遇到多语言文本时应改用显式的字符类断言如(?!\w)/(?!\w)或结合 Unicode 属性替代\b这一点在处理国际化文本时尤其重要。任务原文与需求拆解练习1-find-time-hh-mm的任务描述如下时间采用hours:minutes格式小时和分钟都是两位数例如09:00。 编写一个正则表达式在字符串Breakfast at 09:00 in the room 123:456.中查找时间。 P.S. 本任务暂时无需校验时间的正确性因此25:99也可以视为合法结果。 P.P.S. 正则表达式不应匹配123:456。拆解需求可以得到三个关键约束格式约束小时:分钟均为恰好两位数字即形如\d\d:\d\d边界约束时间必须是字符串中的独立片段不能被其他数字字符粘连——这正是排除123:456的关键正确性约束本阶段不校验时间是否真实有效25:99也算合法因此无需引入小时/分钟范围判断。陷阱点在于字符串中同时存在09:00与123:456后者内部包含形如23:45的片段若只写\d\d:\d\d而不加边界约束就会错误命中123:456中的23:45。官方题解/\b\d\d:\d\d\b/仓库中的官方题解给出了答案alert( Breakfast at 09:00 in the room 123:456..match( /\b\d\d:\d\d\b/ ) ); // 09:00模式由三部分组成\b左侧词边界要求冒号前的第一个数字前不是词字符\d\d:\d\d两位数字、冒号、两位数字\b右侧词边界要求冒号后的第二个数字后不是词字符。为什么不会匹配123:456让我们跟随正则引擎的匹配过程分析候选片段23:45来自123:456其左侧是字符1。1属于\w因此在1与2之间不存在词边界左侧的\b判定失败整个候选被拒绝引擎继续尝试从3开始匹配但3之后是冒号不足两个数字无法构成\d\d:\d\d因此123:456被整体排除。而09:00的左侧是空格、右侧也是空格后接句点前的空格两侧都满足\b条件匹配成功。若使用全局标志/\b\d\d:\d\d\b/g在包含多个时间的字符串中可以一次性取出全部合法时间片段例如Meet at 09:00, lunch at 12:30, see 123:456.match(/\b\d\d:\d\d\b/g); // [09:00, 12:30]扩展思考从边界控制到时间正确性校验本任务刻意省略了时间正确性校验25:99也合法。如果需要进一步校验小时与分钟范围可以在\b\d\d:\d\d\b的基础上把数字部分替换为带范围的模式例如小时00-23([01]\d|2[0-3])分钟00-59[0-5]\d组合后的完整模式形如/\b([01]\d|2[0-3]):[0-5]\d\b/。需要注意的是这是练习题之外的进阶方向仓库原文并未包含此实现读者可将其作为课后延伸自行验证。另一个值得注意的对比是\b与字符串锚点^、$的关系。^与$只作用于字符串首尾而\b作用于字符串内部的每个词/非词交界处二者定位粒度不同。当需要把时间限制在整段文本的开头或结尾时可组合使用例如^\d\d:\d\d$用于校验整个字符串就是一个时间。仓库参考路径汇总章节正文9-regular-expressions/06-regexp-boundary/article.md任务描述9-regular-expressions/06-regexp-boundary/1-find-time-hh-mm/task.md官方题解9-regular-expressions/06-regexp-boundary/1-find-time-hh-mm/solution.md边界位置示意图9-regular-expressions/06-regexp-boundary/hello-java-boundaries.svg正则表达式章节总览9-regular-expressions/index.md本文所有示例与结论均可直接在仓库对应文件中复现验证先通读 article.md 理解\b语义再动手运行题解中的.match()调用即可完整掌握用词边界精确锁定独立时间片段这一实战技能。赞分享文档/教程前端【免费下载链接】en.javascript.infoModern JavaScript Tutorial项目地址https://gitcode.com/gh_mirrors/en/en.javascript.info点击查看免费下载相关推荐JavaScript 正则表达式 \b 单词边界实战用 \b\d\d:\d\d\b 精确匹配 HH:MM 格式时间JavaScript 正则表达式 \b 单词边界实战用 \b\d\d:\d\d\b 精确匹配 HH:MM 格式时间 导读 本篇围绕 en.javascript文档/教程前端Modern JavaScript Tutorial 任务实战用 JavaScript 编写 min(a, b) 求两数最小值Modern JavaScript Tutorial 任务实战用 JavaScript 编写 min a, b 求两数最小值 本篇文章围绕《Modern Ja文档/教程前端JavaScript 正则表达式中的词边界 \b 详解JavaScript 正则表达式中的词边界 \b 详解 正则表达式是 JavaScript 中强大的文本处理工具而词边界 \b 是一个经常被忽视但非常有用的元文档教程前端上一篇如何在macOS上完美使用Xbox游戏手柄终极兼容性优化指南下一篇PaddleClas 核心功能深度解析实用图像识别系统、预训练模型库与特征学习组件创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026年下半年AI论文写作工具最新榜单,学术写作工具全面测评

2026年下半年AI论文写作工具最新榜单,学术写作工具全面测评

2026年,AI论文写作工具市场已从“百花齐放”进入深度分化阶段。随着全国多所高校将AIGC检测纳入论文答辩前置条件——浙江财经大学管理学院要求AIGC检测≤30%、查重≤20%——用户对工具的要求已从“能不能写”转向“写得专不专业、文献真不真实、AI率能不能控”。 本…

2026/10/19 13:14:27 阅读更多 →
Alluxio 接入 MinIO 底层存储完整指南:s3:// 协议配置、验证与故障排查

Alluxio 接入 MinIO 底层存储完整指南:s3:// 协议配置、验证与故障排查

存储分布式文件系统缓存大数据 【免费下载链接】alluxio Alluxio, data orchestration for analytics and machine learning in the cloud 项目地址: https://gitcode.com/gh_mirrors/al/alluxio 点击查看 免费下载 MinIO 是一款兼容 AWS S3 协议的开源对象存储服务…

2026/10/11 3:24:56 阅读更多 →
text-to-cad实战:从自然语言到STEP模型的完整链路与踩坑指南

text-to-cad实战:从自然语言到STEP模型的完整链路与踩坑指南

1. 从一句话到三维模型:text-to-cad 到底在解决什么问题把"画一个 M8 法兰螺母"这句话直接变成可加工的 STEP 文件,这件事在几年前还只存在于论文里。现在 text-to-cad 这类工具已经能跑通从自然语言到 B-rep 实体的完整链路,虽然离…

2026/10/12 8:21:37 阅读更多 →

最新新闻

Django进销存系统源码拆解:从数据模型到库存事务的完整实践

Django进销存系统源码拆解:从数据模型到库存事务的完整实践

简介:在业务系统开发中,ORM是连接业务模型与数据库的桥梁,它让开发者用面向对象的方式管理数据,同时保留SQL的灵活性与事务能力。以Django框架为例,进销存系统正是一类对数据一致性要求极高的典型业务场景:…

2026/10/20 10:51:43 阅读更多 →
微服务容器化落地方案:从架构选型到DevOps实践

微服务容器化落地方案:从架构选型到DevOps实践

简介:《Docker微服务架构实战》PDF版是蒋彪撰写的高质量技术著作,聚焦微服务与Docker两大主流趋势,适合云计算工程师、架构师、技术经理以及正在推进容器化改造的中小型企业团队。全书从微服务架构的技术选型、服务拆分原则讲起,系…

2026/10/20 10:51:43 阅读更多 →
REA 逆向调查 token 成本砍半:会话复用、快照与有界读取的三层姿势

REA 逆向调查 token 成本砍半:会话复用、快照与有界读取的三层姿势

REA 逆向调查 token 成本砍半:会话复用、快照与有界读取的三层姿势 【免费下载链接】rea Reverse engineer anything with agents, from app behavior down to native binaries. 项目地址: https://gitcode.com/GitHub_Trending/rea2/rea 用 REA(…

2026/10/20 10:51:43 阅读更多 →
Anthropic API Key 从获取到使用避坑实战指南

Anthropic API Key 从获取到使用避坑实战指南

第一次接触 Anthropic 的 API 时,很多开发者都会在官网上找半天,结果只看到一行sk-ant-...开头的字符串,根本不知道它和账号密码有什么区别。更麻烦的是,在社区里搜索时,教程要么只讲怎么复制粘贴,要么默认…

2026/10/20 10:51:43 阅读更多 →
卡尺标定法径向扫描拟合圆:工业视觉高精度圆检测实战

卡尺标定法径向扫描拟合圆:工业视觉高精度圆检测实战

简介:这份资源面向具备一定C与OpenCV基础的图像处理开发者,尤其是需要实现工业视觉中圆检测与定位功能的工程师。它模仿Halcon的圆拟合能力,采用卡尺标定法沿径向扫描图像梯度,再通过最小二乘法完成圆形拟合,可用于工件…

2026/10/20 10:51:43 阅读更多 →
STM32F030 RTC唤醒与Stop模式低功耗实战:纽扣电池续航数月

STM32F030 RTC唤醒与Stop模式低功耗实战:纽扣电池续航数月

简介:这份资源面向使用STM32F030系列、尤其是STM32F030C8T芯片进行低功耗开发的嵌入式工程师与学习者,聚焦RTC闹钟定时5分钟后从待机模式唤醒这一典型场景。内容围绕LSE时钟源初始化、RTC闹钟寄存器配置、PWR唤醒事件设置以及进入待机模式的完整流程展开…

2026/10/20 10:50:42 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →