反转 · 回文 · 驼峰 · 压缩 · 查找 · 统计 · 截断 · 模板 · 解析 · 随机
场景:用户输入 "hello",输出 "olleh"。还要会反转句子里的单词顺序:"the sky is blue" → "blue is sky the"。
场景:"A man, a plan, a canal: Panama" 是回文。常考题,要处理标点和空格。
/[^a-z0-9]/g 是关键。场景:后端返回 snake_case(user_name),前端要 camelCase(userName)。Vue/React 项目天天用。
(\w) 捕获组配合 (_, c) => c.toUpperCase() 是替换大写的标准写法。$1 表示第一个捕获组。场景:连续相同字符压缩成"字符+次数"。LeetCode 经典题,考遍历和边界。
i <= length(注意等号,处理最后一组);不要忘记空字符串边界。场景:"abcabcbb" 最长无重复子串是 "abc",长度 3。LeetCode TOP3 高频,必须会。
场景:"aabbbcc" → {a:2, b:3, c:2}。词频统计基础。
acc[char] || 0 处理首次出现是 undefined 的情况,比 if 判断简洁。场景:列表卡片标题太长要截断显示。Vue 项目里 truncate(text, 20)。
text-overflow: ellipsis 也能截断,但 JS 截断是为了后端返回数据时预处理好,或导出文件时用。场景:实现简化版 mustache 模板:"你好 {{name}},今年 {{age}} 岁" + 数据 → "你好小明,今年18岁"。
(\w+) 只匹配单词,(.+?) 支持点号嵌套。场景:支付页面、订单列表显示金额要千分位分隔。每 3 位加一个逗号。
\B 非单词边界;(?=(\d{3})+) 正向预查,后面每 3 位数字的位置;(?!\d) 后面不再是数字(处理小数点后)。场景:生成临时 ID、邀请码、验证码、文件名随机后缀。