2026/5/21 14:13:26
网站建设
项目流程
福州网站建设发布,南宁市优化网站,关键词优化建议,商城网站建设 数商云【Java Web学习 | 第14篇】JavaScript(8) —— 正则表达式
正则表达式#xff08;Regular Expression#xff0c;简称 regex / regexp#xff09;是处理字符串匹配、搜索、替换、提取、验证等操作时最强大的工具之一#xff0c;几乎是现代前端开发、数据校验、日志处理等领…【Java Web学习 | 第14篇】JavaScript(8) —— 正则表达式正则表达式Regular Expression简称 regex / regexp是处理字符串匹配、搜索、替换、提取、验证等操作时最强大的工具之一几乎是现代前端开发、数据校验、日志处理等领域必备技能。一、正则表达式到底是什么用最通俗的话说正则表达式就是一套描述字符串特征的“规则/模板”然后拿这个模板去跟目标字符串比对看它符不符合这个规则。常见用途举例验证手机号 1[3-9]\d{9} 验证邮箱 ^\w([.-]?\w)*\w([.-]?\w)*(\.\w{2,})$ 提取所有数字 \d 判断是否全为中文 ^[\u4e00-\u9fa5]$ 替换所有空格 \s → 校验密码强度 (?.*\d)(?.*[a-z])(?.*[A-Z]).{8,}二、JavaScript 中创建正则的两种方式// 方式1字面量最常用推荐constreg1/hello/i;// i ignore case 忽略大小写// 方式2构造函数动态创建时使用constkeywordworld;constreg2newRegExp(keyword,ig);// 第二个参数是修饰符字符串两种方式的本质区别// 字面量会在代码解析时就创建正则对象constr1/abc/;// 固定不变// 构造函数会在运行时才创建可以动态拼接规则lettypejpg|png|gif;constimgRegnewRegExp(\\.(${type})$,i);三、正则表达式核心组成必须掌握组成部分符号/写法含义记忆口诀普通字符abc123匹配本身写啥匹配啥元字符. ^ $ * ? () [] {} \\d \D \w \W \s \S特殊功能的符号字符类[abc] [^abc] [a-z] [0-9]匹配其中任意一个字符 / 不在其中的字符方括号选一个量词* ? {n} {n,} {n,m}控制前面内容的重复次数数量词定位符^ $ \b \B匹配位置开头、结尾、单词边界位置钉子分组(abc) (?:abc)把多个字符当一个整体处理小括号分组或a|b或者竖线选边站转义. \ / \n \t让元字符变普通字符反斜杠逃跑修饰符/reg/i /reg/g /reg/m /reg/s全局、忽略大小写、多行、.匹配换行性格标签四、常用正则写法速查表建议收藏用途正则表达式说明手机号大陆/^1[3-9]\d{9}$/11位以1开头邮箱/1[\w-].[\w-.]$/比较宽松版纯数字/^\d$/至少一个数字中文姓名/2{2,16}$/2~16个汉字可含·密码强/^(?.\d)(?.[a-z])(?.*[A-Z])[0-9a-zA-Z]{8,20}$/必须包含大小写字母数字URL/https?/[\w.-].[\w-.](:\d)?(/[\s]*)?$/简单版身份证号18位/(^\d{15}$)(^\d{17}[\dXx]$)/日期yyyy-mm-dd/^\d{4}-(0[1-9]1[0-2])-(0[1-9]6~18位字母数字下划线/3{6,18}$/常见用户名规则五、JavaScript 中常用的正则方法重点conststrHello World! Hello JavaScript 2025!;// 1. test() —— 返回 boolean有没有匹配到console.log(/\d{4}/.test(str));// true// 2. exec() —— 返回匹配详情数组最强大但只找第一个constreg/(\w)\s(\w)/i;constresultreg.exec(Hello World);console.log(result);// [Hello World, Hello, World, index: 0, input: ...]// 3. match() —— 返回所有匹配结果配合 g 修饰符console.log(str.match(/\b\w{5}\b/g));// [Hello, World, Hello, JavaS]// 4. matchAll() —— 返回迭代器包含所有匹配详情推荐for(constmofstr.matchAll(/(\w)\s(\w)/g)){console.log(m[0],m[1],m[2]);}// 5. replace() / replaceAll() —— 替换console.log(str.replace(/\d{4}/g,2026));// 替换年份console.log(str.replace(/Hello/g,Hi));// 替换所有Hello// 6. search() —— 返回第一个匹配位置索引没有返回-1console.log(str.search(/java/i));// 12不区分大小写// 7. split() —— 用正则切分console.log(a1b2c3d.split(/\d/));// [a, b, c, d]六、推荐学习进阶路径2025-2026 实用路线阶段目标推荐资源/练习方式入门掌握基本符号、量词、定位符regex101.com神器熟练能写常见校验、提取、替换写 10 个常见表单校验进阶理解捕获组、反向引用、零宽断言《精通正则表达式》 LeetCode正则题高手能看懂复杂正则、写高性能正则分析开源项目里的正则写法实战处理日志、爬虫、代码生成等真实场景写一个简易日志解析器最后送一句口诀背下来很有用“先定位、再匹配、别贪婪、善用组、别忘了转义”先定位^ $ \b再匹配具体内容别贪婪尽可能少匹配用 ?善用捕获组和非捕获组元字符要转义祝你早日把正则玩得溜溜的下一篇文章见\w.- ↩︎\u4e00-\u9fa5· ↩︎a-zA-Z0-9_ ↩︎