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

[特殊字符] 拼多多大厂笔试题——正则表达式

💡前言:正则表达式是拼多多、字节、阿里前端笔试最高频考点之一。很多同学JS基础不错,但一遇到正则直接白给。

✨ 本篇完全对标拼多多真实笔试原题,从需求、规则、语法、代码、易错点全方位拆解,零基础也能吃透正则核心,轻松拿捏大厂笔试!

今天这篇完全对标拼多多真实笔试原题,从需求、规则、语法、代码、易错点全方位拆解,看完直接秒杀所有手机号正则面试题!

📌 一、真题 1:手机号正则校验

题目需求

  • 如何验证用户输入的手机号是正确的?
    • 必须是11 位纯数字
    • 手机号必须以数字 1 开头
    • 第二位不能是 0、1、2
    • 前两位确定后,后面必须跟随9 位数字

核心原则:永远不要相信用户的输入(把用户当小白)

正则本质:模式匹配 + 字符规则数学约束。

✅真题标准答案

letstr='15188888898';// 描述一个匹配的规则// 一个字符一个字符的匹配//[] 表示匹配的字符范围//{n} 表示字符的长度//let reg =/1[3-9][0-9]{9}/;letreg=/^1[3-9]\d{9}$/;console.log(Object.prototype.toString.call(reg))console.log(typeof{});//类型 对象objectconsole.log(typeofreg);//类型 对象objectconsole.log(reg.test(str));//true//let str = '13888888888';//console.log(reg.test(str)); //false//let str = '138888888';少一个8//console.log(reg.test(str)); //false//let str = '13888888888ss';$表示字符串的结束//console.log(reg.test(str)); //false//let str = '13888888888ss';^表示字符串的开始

✨考点解析

💡/ element / ——>(正则表达式基本框架)每次匹配一个字符

🧱1:固定开头字符,满足手机号以 1 开头;

/1/匹配第一个字符为1

——————>

🧱[3-9]:限定第二位取值范围,规避 0/1/2;

/1[3-9]/匹配第二个字符,第二位取值范围:3-9

——————>

🧱\d{9}:\d代表单个数字,

🧱{9}代表精准匹配 9 次,补齐末尾位数。

/1[3-9]\d{9}/

——————>

🧱^:匹配字符串起始位置,$:匹配字符串结束位置,杜绝前后多出多余字符;

letstr='13888888888ss';//一般//let reg =/1[3-9][0-9]{9}/;//false// 有$letreg=/1[3-9]\d{9}$/;//trueconsole.log(reg.test(str));//$表示字符串的结束letstr='aa13888888888';//一般//let reg =/1[3-9][0-9]{9}/; //false//有^letreg=/^1[3-9]\d{9}$/;//trueconsole.log(reg.test(str));//^表示字符串的开始

❌ 新手常见错误写法(笔试高频踩坑)

// 错误1:没有加^ $,会匹配到不完整号码constreg1=/1[3-9]\d{9}/// 错误2:第二位范围写错constreg2=/^1[0-9]\d{9}$/// 错误3:位数写死错误constreg3=/^1[3-9]\d{8}$/

📌 二、正则表达式核心语法精讲(笔试必背)

💡正则全称:Regular Expression

💡JS 正则固定格式:/ 正则规则 /

💡匹配逻辑:一次只匹配一个字符,逐位校验

  • / /:正则包裹标识,内部写匹配规则
  • {}:限定前面字符的匹配次数
  • []:限定单个字符的取值范围
  • \d:匹配任意数字 0-9
  • ^:匹配字符串开头
  • $:匹配字符串结尾

📌 三、前置基础:JS 数据类型(笔试底层考点)

JS 数据类型分为两大派系,正则操作字符串全部依赖这两类:

✨1. 基本类型(值类型)
  • Number 数值类型
  • String 字符串类型(正则主要操作对象)
  • Boolean 布尔类型
  • undefined
  • null
✨2. 引用类型(对象类型)
  • Object 普通对象
  • Array 数组:下标为数字索引的特殊对象

📌 四、正则两大高频操作:提取数字 + 替换字符

✨1. 提取字符串中所有数字(match + 全局匹配 g)

match():字符串提取正则匹配内容

g 修饰符:global 全局匹配,找到所有符合规则的内容,不停止

\d+:+ 代表匹配一次或多次,可以提取连续数字

conststr='价格是100元,进价是80元,赚了20元';//匹配数字constreg=/\d+/g;//g表示全局匹配console.log(reg.test(str));//trueconstres=str.match(reg);console.log(res);//['100', '80', '20']

✨2. 字符串正则替换(replace)

replace(正则, 新内容):批量替换字符串内容

//干掉- w 改成 W大写conststr='hello-world';// () 表示分组 不匹配() ,但是可以提取// $1表示提取第一个分组的内容constreg=/-(\w)/;console.log(str.match(reg));//['-w', 'w']constres=str.replace(reg,(_,c)=>{console.log(_,c,'/////');returnc.toUpperCase();})console.log(res);//helloWorld

步骤

1. 正则 -(\w) 找到 -字母
2. 分组 () 把后面的字母提取出来
3. replace 回调里把字母变大写,自动删除 -
4. 最终:hello-world → helloWorld

🛠️另一种

constres="hello-world".replace(/-(\w)/,(_,c)=>{returnc.toUpperCase();})console.log(res);//helloWorld

✨3. 进阶实战:模板字符串正则渲染(递归替换)

除了数字提取、字符替换,正则递归替换也是笔试、项目开发高频用法,常用于模板字符串插值渲染,实现模板占位符批量替换为真实数据。

需求场景:通过正则匹配{{变量名}}占位符,递归替换模板中所有变量,实现数据动态渲染。

// 模板字符串lettemplate=`我是{{name}}, 年龄{{age}}, 性别{{sex}}`;// 数据源对象letperson={name:'张三',age:17,sex:'男'}// 正则模板渲染函数(递归替换所有占位符)functionrender(template,data){// 匹配 {{变量名}} 格式的占位符constreg=/{{(\w+)}}/// 判断是否存在可匹配的占位符if(reg.test(template)){// exec 获取匹配到的变量名constname=reg.exec(template)[1];// 替换当前匹配到的占位符template=template.replace(reg,data[name])// 递归调用,继续替换剩余占位符returnrender(template,data);}// 所有占位符替换完成,返回最终字符串returntemplate;}// 输出结果:我是张三, 年龄17, 性别男console.log(render(template,person));
核心知识点解析
  • /{{(\w+)}}/:专属模板占位符正则,{{ }}匹配固定双大括号,(\w+)捕获括号内的变量名(字母/数字/下划线);
  • exec():正则匹配方法,可获取匹配结果及捕获组内容,精准拿到变量名;
  • 递归逻辑:单次只替换一个占位符,通过递归循环匹配,直到模板中无任何占位符,完美适配多变量模板;
  • 无需g全局修饰符,依靠递归实现全局替换,是前端模板引擎的核心底层原理。

📌 五、正则符号速查表(面试直接背)

符号作用说明
\d匹配任意单个数字 [0-9]
\w匹配字母、数字、下划线
+匹配前面字符 1 次或多次
*匹配前面字符 0 次或多次
[]字符范围约束
{n}精准匹配 n 次
g全局匹配
^ $首尾严格锁定

📌 六、完整可直接上线的手机号校验工具函数

// 拼多多笔试完整版封装函数 function checkPhoneNumber(phone) { const reg = /^1[3-9]\d{9}$/ return reg.test(phone) } // 测试 console.log(checkPhoneNumber("13666666666")) // true console.log(checkPhoneNumber("12666666666")) // false

📌 七、全文核心总结

✨ 本篇围绕拼多多前端笔试核心正则考点,从零拆解手机号正则校验核心逻辑、原生正则语法、三大实战用法,覆盖笔试选择题、编程题、工程实战三大场景:

  • ✅ 掌握手机号正则核心规则:首尾锚点、范围匹配、精准位数约束
  • ✅ 吃透正则基础符号,告别语法混淆、手写报错问题
  • ✅ 熟练运用 match 提取、replace 替换、递归模板渲染三大实战技巧
  • ✅ 规避新手高频踩坑点,写出规范、严谨、可上线的正则代码

💡 学习建议:正则不要死记硬背,理解「逐字符匹配、规则约束」的核心思想,就能适配各类表单校验、字符串处理场景!

💬 文末互动

看完这篇,相信你已经拿捏拼多多正则笔试核心考点!大家如果遇到其他大厂正则真题、正则手写难题,欢迎评论区留言交流,一起刷题进阶!

✅ 掘金发布标签

JavaScript正则表达式前端面试拼多多笔试前端基础

❤️码字不易,欢迎点赞收藏,持续更新大厂前端笔试真题解析!

http://www.zskr.cn/news/1463490.html

相关文章:

  • 【深度解析】Gemma 4 12B:面向本地 Agent 工作流的统一多模态模型与 OpenAI 兼容接入实践
  • 【会议征稿通知 | 中国教育发展战略学会教育大数据专业委员会主办 | SPIE出版 | EI 、Scopus稳定检索】第六届先进算法与信号、图像处理国际学术会议(AASIP 2026)
  • 解锁AI绘画的魔法钥匙:ComfyUI ControlNet Aux全功能探索指南
  • 5个关键步骤:用BG3ModManager轻松管理博德之门3模组
  • 效率提升:基于dezmall设计规范,用快马AI一键生成管理后台框架
  • 实时流式聚类×多模态AI工具链整合:单日处理2.4亿用户行为数据的低延迟架构(已通过等保三级认证)
  • 首尔国立大学的这项新技术让病理分析效率提升百倍
  • Littrow结构中光栅系统的配置与优化
  • 探索Forza Mods AIO:极限竞速游戏的专业修改工具
  • Notepad--跨平台编辑器:国产替代方案的技术突围与实践指南
  • JCMsuite应用:散射体的光学手性响应
  • 基于树莓派与BerryGPS-GSM的实时GPS追踪系统实战指南
  • 2026年企业AI开发项目周期评估:从需求到上线的时间表与交付节奏清单 - 华旭传媒
  • 2026年服装加盟推荐:古士旗男装加盟联营退换货政策是怎样的? - mypinpai
  • claudecode生成代码如何验证?用快马5分钟搭建计算器原型
  • 中高端水族器材品牌有哪些?2026年品牌梯队清单与马印定位评估 - 华旭传媒
  • 2026年6月专业的施孝园公墓排名推荐榜推荐榜,立碑、壁葬、树葬、花坛葬推荐选择指南 - 海棠依旧大
  • 【国家级智能运维白皮书核心方法论】:用大模型重构年检流程的12个关键接口设计
  • 别再只懂AM了!用Python+Matplotlib手把手模拟FM调频信号,可视化理解频率调制全过程
  • 让普通鼠标超越苹果触控板:Mac Mouse Fix终极指南
  • 2026年6月热门的廊坊防水维修机构有哪些推荐榜,自粘卷材/免砸砖/注浆堵漏/屋面防水/卫生间防水机构选择指南 - 海棠依旧大
  • 2026年6月市面上新疆租车公司找哪家推荐榜,商务车型、越野车型、经济车型选择指南 - 海棠依旧大
  • 2026年小白部署OpenClaw/Hermes Agent配置Token Plan新手必看
  • 隐私优先的实时语音转文字方案:TMSpeech如何实现3倍效率提升
  • 用Matlab复现经典方腔流:从投影法代码到Re=100的流场可视化(附完整程序)
  • 西门子WinCC电子签名对话框C脚本实战:从ShowDialog函数调用到权限验证的完整流程
  • 如何快速实现HTML到Word完美转换:html-to-docx终极指南
  • 2026重庆儿童配眼镜推荐,孩子配眼镜全攻略,家长最容易踩的五个坑 - 配眼镜新资讯
  • DIY锂电池容量测试仪:基于Arduino的恒流充放电与库仑计设计
  • 当AI工具遇上智能资产:一场静默的架构革命——仅剩237家企业掌握的实时语义对齐协议(含RFC草案编号RFC-AI-IA-2024-08)