当前位置: 首页 > news >正文

正则表达式 - 正向断言和反向断言

在正则表达式中,断言(Assertions) 是一种“零宽匹配”结构,它不匹配具体的字符,而是匹配一个“位置”,这个位置需要满足某些条件(比如该位置前后有特定内容)。断言的核心作用是“限定目标内容的上下文环境”,但不会消耗字符串中的字符。

正向断言(先行断言):判断“后面”是否满足条件

正向断言(Positive Lookahead Assertion)的语法是 (?=pattern),表示:当前位置的后面必须能匹配 pattern,但 pattern 本身不会被计入最终的匹配结果。

简单说:“找一个内容A,要求A的后面是内容B”,A是要匹配的目标,B是正向断言的条件。

反向断言(后行断言):判断“前面”是否满足条件

反向断言(Positive Lookbehind Assertion)的语法是 (?<=pattern),表示:当前位置的前面必须能匹配 pattern,但 pattern 本身不会被计入最终的匹配结果。

简单说:“找一个内容A,要求A的前面是内容B”,A是要匹配的目标,B是反向断言的条件。

结合你的示例分析

你的字符串是:let str = 'JS5211314你知道么555啦啦啦';

1. 正向断言:/\d+(?=啦)/
  • 目标:匹配 1个或多个数字(\d+)
  • 条件:这些数字的 后面必须紧跟着“啦”((?=啦))

在字符串 'JS5211314你知道么555啦啦啦' 中:

  • 数字 5211314 后面是 '你',不满足“后面是啦”,所以不匹配;
  • 数字 555 后面是 '啦'555 紧接着 '啦啦啦'),满足条件,因此匹配 555

执行 reg.exec(str) 会返回 ['555', index: 11, input: 'JS5211314你知道么555啦啦啦', groups: undefined]

2. 反向断言:/(?<=么)\d+/
  • 目标:匹配 1个或多个数字(\d+)
  • 条件:这些数字的 前面必须紧跟着“么”((?<=么))

在字符串中:

  • 数字 555 前面是 '么''你知道么' 后面是 555),满足条件,因此匹配 555
  • 数字 5211314 前面是 'JS',不满足“前面是么”,所以不匹配。

执行 reg.exec(str) 同样会返回 ['555', index: 11, input: 'JS5211314你知道么555啦啦啦', groups: undefined]

总结

  • 正向断言 (?=pattern):限定“目标内容的后面必须有 pattern”;
  • 反向断言 (?<=pattern):限定“目标内容的前面必须有 pattern”;
  • 两者都是“零宽匹配”,只判断位置,不消耗字符,最终匹配结果只包含目标内容(示例中的 \d+)。
http://www.dtcms.com/a/571080.html

相关文章:

  • 网站平台怎么推广网站团购活动页面怎么做
  • 法治中国建设网站从零学习做网站
  • 网站内部资源推广案例微信开发者工具官方文档
  • 大港油田建设官方网站建设企业功能网站
  • 【计算机软件资格考试】软考综合知识题高频考题及答案解析4
  • 医院网站asp备案用的网站建设规划书怎么写
  • 做字的网站潍坊 网站建设
  • 怎么建设一个企业网站怎么样做网站赚钱吗
  • html5网站开发案例视频移动互联网的定义
  • 文网站建设工程项目建设自学网站
  • 上海域名网站吗电子商务网站面临的安全隐患
  • 企业网站模块建设流程湖南企业名录大全
  • 好用的电磁阀公司
  • 网站设计网站设计公司价格建站网站建设哪个好
  • 公司网站建设外包流程wordpress精简代码
  • 李沐深度学习笔记D1-数据操作
  • 扬州西区网站建设互联网小程序设计师
  • 开发系统网站建设网站设计需要什么技术
  • RT-DETRv4:利用视觉基础模型轻松推进实时目标检测
  • 晨光文具店网站建设电脑qq小程序入口
  • 管理系统网站模板下载做网站价格miniuinet
  • 门户网站开发 价格线上室内设计师
  • 关键词查找网站门户网站 营销
  • 温州做网站seo网站优化助手
  • 自己免费怎么制作网站吗公司网站上线的通知
  • 浙江人工智能建站系统软件wordpress 添加文件夹
  • 【IOS开发】swift的泛型使用
  • 网站建设结单 优帮云免费建造网站
  • 网站销售优书网书单推荐
  • 爱 做 网站大连做网站仟亿科技