认知偏误识别训练 - 场景判断属于哪种偏见
给出日常情景描述,选择反应了哪种认知偏误,提升批判性思维。
UD5工具箱
交互式学习与测试正则表达式的环视断言(Lookaround Assertions)—— 正向/负向先行断言、正/负向后行断言,实时高亮匹配结果
(?=pattern)
匹配后面跟着指定模式的位置,但不消耗字符。
不消耗字符(?!pattern)
匹配后面不跟着指定模式的位置,不消耗字符。
否定条件(?<=pattern)
匹配前面跟着指定模式的位置,不消耗字符。
ES2018+(?<!pattern)
匹配前面不跟着指定模式的位置,不消耗字符。
否定条件环视断言(Lookaround)是正则表达式中的一种零宽度断言,用于检查某个位置的前面或后面是否符合特定模式。关键特性:断言只检查条件是否满足,不会消耗(consume)匹配的字符,因此也被称为"零宽度"匹配。
环视断言分为四大类:
(?=...) — 后面必须跟着指定模式(?!...) — 后面不能跟着指定模式(?<=...) — 前面必须跟着指定模式(?<!...) — 前面不能跟着指定模式先行断言(Lookahead)检查的是当前位置之后(右侧)的文本,语法为 (?=...) 或 (?!...)。
后行断言(Lookbehind)检查的是当前位置之前(左侧)的文本,语法为 (?<=...) 或 (?<!...)。
示例对比:对于文本 "abc123"——\d+(?=abc) 不匹配(数字后面不是abc),而 (?<=abc)\d+ 匹配 "123"(数字前面是abc)。
注意:后行断言是ES2018(ES9)才引入的特性,在非常旧的浏览器中可能不被支持。所有现代浏览器(Chrome 62+、Firefox 78+、Safari 16.4+、Edge 79+)均已支持。
不会!这是环视断言最核心的特性。断言仅仅"看一眼"文本,检查条件是否满足,但不消耗任何字符。
这意味着正则引擎在断言检查完成后,匹配位置会回到断言开始前的位置。因此断言非常适合用于添加额外的上下文约束,而不影响实际匹配的内容。
实际例子:正则 (?<=¥)\d+(?=元) 匹配文本 "¥15元"——匹配结果是 "15",前后的 "¥" 和 "元" 仅作为条件被检查,但不会被包含在匹配结果中。
正向断言(Positive)用于限定必须满足的条件:
\d+(?=元) — 只匹配后面跟着"元"的数字(价格提取)(?<=@)\w+ — 只匹配@后面跟着的用户名(?=.*[A-Z])(?=.*\d).{8,} — 密码必须同时包含大写字母和数字负向断言(Negative)用于排除不想要的情况:
\d+(?!\.\d) — 匹配整数,排除小数(后面不跟小数点)(?<!www\.)\w+\.com — 匹配域名但排除以www开头的(?!.*password).* — 排除包含"password"的字符串可以!环视断言内部可以包含另一个环视断言,形成嵌套结构。这在复杂验证场景中非常有用。
示例:(?=(?=.*[A-Z])(?=.*\d))\w{6,} — 外层先行断言验证密码包含大写字母和数字,然后匹配6个以上单词字符。
但注意:JavaScript(以及大多数正则引擎)不允许后行断言中包含可变长度的模式。例如 (?<=\d+) 在JavaScript中会抛出错误,因为后行断言需要固定宽度。不过某些现代引擎(如.NET)支持可变宽度后行断言。
环视断言内部可以包含捕获组,捕获组会正常捕获内容,但由于断言不消耗字符,捕获组的引用方式需要注意。
关键点:断言内的捕获组捕获的是断言检查时扫描到的内容,即使断言最终不消耗这些字符。在JavaScript中,你可以在match结果的groups或捕获组索引中获取这些值。
示例:(?=(\d{3})) 匹配每3位数字前的位置,同时捕获组1捕获了这3位数字。
环视断言本身性能开销较小,但在以下情况下可能影响性能:
优化建议:
.*等贪婪模式零宽度匹配指的是正则表达式匹配到的是位置(position)而非实际字符,匹配长度为0。环视断言、^、$、\b等都是零宽度断言。
如果整个正则表达式只包含零宽度断言(如 (?=\d)),则匹配结果:
在全局匹配模式下,正则引擎会自动将lastIndex前进1位以避免无限循环。这意味着对于文本"abc",(?=.) 会匹配位置0、1、2(每个字符前各一个位置)。
给出日常情景描述,选择反应了哪种认知偏误,提升批判性思维。
检测并显示设备当前的所有CSS媒体特性值(如暗色模式、减少动画等)。
横向滚动查看公元前至今的东西方重要事件,点击弹出详情,直观对比文明进程。
循环展示古今中外哲学家的经典名言,引发深度思考。
设置演讲总时长和警告时间点,大屏显示剩余进度条,颜色从绿变黄再到红。
两张几乎相同的图,点击差异处,全部找出通关。
排列歌曲顺序,输入每首歌时长,自动计算总时长及暖场结束时间。
记录你在长文章页面的滚动深度,估算阅读完成百分比并提供时间预估。
以图片对比展示正确和错误握笔姿势,帮助家长和老师指导儿童。
支持无限嵌套子的待办事项,勾选完成,进度条显示整体完成度,localStorage保存。
设置药品名称、剂量和时间表,浏览器通知提醒服药,并打卡记录依从性。
展示公历今日发生的重大历史事件列表,支持分享卡片,增长知识。
输入数据即刻生成柱状图、折线图、饼图等,可自定义颜色标签,基于Canvas/Chart.js前端渲染。
选择不同CSS框架的网格系统配置,对比生成的列数和类名差异,辅助技术选型。
屏幕颜色变化时尽快点击,测量从刺激到反应的时间,统计平均反应速度。
在一个隔离环境中渲染单个组件,调整 props 查看变化,类似于 Storybook 的轻量替代。
输入用户查询,测试 Dialogflow 代理的意图匹配、参数提取和回复。
回答关于身心灵各层面的问题,评估七大脉轮能量是否平衡。
从几种颜色排列中选择最吸引你的,给出趣味性格解读。
短暂显示随机数字串,消失后凭记忆输入,逐步增加长度。
粘贴想练习的文本,计时打字,计算WPM与准确率。
等待背景从红变绿瞬间点击,记录毫秒级反应时间,可多次取平均。
显示一系列石原色觉测试图,框选所见数字,初步判断色觉异常。
播放不同频率与响度的纯音,用户响应后绘制基础听力图,提示听力状况。
粘贴结构化数据代码,模拟Google结构化数据测试,检查错误与丰富结果。
发出20Hz到20kHz的正弦扫频信号,帮助粗略检测耳机或音箱的频率表现。
显示交通标志图片,从多个选项中选择正确含义,帮助备考驾照理论。
向任意输入URL发送请求,清晰显示响应状态码、头信息和体,类似轻量级Postman。
通过移动圆点帮助找到眼球盲点位置,演示视神经盘效应。
全屏显示标准视力表(E字或C字),可自动随机生成方向,辅助粗略视力检查。