找回密码
 会员注册
查看: 13|回复: 0

百度工程师带你玩转正则

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
71242
发表于 2024-10-8 21:43:58 | 显示全部楼层 |阅读模式
作者 向阳introduction在很多技术领域,都有正则的身影。但许多像我一样的人,只闻其名。因此将正则常用知识汇总,便于查阅。正则表达式(Regular Expression)是用于描述一组字符串特征的模式,用来匹配特定的字符串。通过特殊字符+普通字符来进行模式描述,从而达到文本匹配目的工具。因此正则表达式是用于匹配字符串中字符组合的模式。正则表达式可以很方便的提取我们想要的信息,所以正则表达式是一个很重要的知识点!欢迎大家一起学习~全文4082字,预计阅读时间11分钟。GEEK TALK01正则概述正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象。GEEK TALK02基本语法2.1 定义方式字面量方式:/^\d+$/g,new RegExp("^\\d+$", "g")2.2 修饰符2.3 元字符一个正则表达式模式是由简单的字符所构成的,比如 /abc/;或者是简单和特殊字符的组合,比如 /ab*c/2.4?其他断言断言的组成之一是边界。对于文本、词或模式,边界可以用来表明它们的起始或终止部分,分为边界类断言与其他断言。边界类断言有 ^, $, \b, \B,其他断言有 x(?=y), x(?!y), (?group) 或 (?'name'group),其中 name 表示捕获组的名称,group 表示捕获组里面的正则。const str = '2022-12-15';const reg = /(\d{4})-(\d{2})-(\d{2})/;str.match(reg)// ['2022-12-15', '2022', '12', '15', index: 0, input: '2022-12-15', groups: undefined]const isNotCaputuringReg = /(?:\d{4})-(?:\d{2})-(?:\d{2})/;str.match(isNotCaputuringReg)// ['2022-12-15', index: 0, input: '2022-12-15', groups: undefined]const namedCaputuringReg = /(?\d{4})-(?\d{2})-(?\d{2})/;str.match(namedCaputuringReg)// 匹配结果如下图GEEK TALK05正则中有趣用法5.1 贪婪匹配与非贪婪匹配贪婪匹配即照着"量词"规则中要求的更多个的情况去做匹配。非贪婪匹配,在"量词"规则后边多加一个问号"?"。"量词"包括 ?、*、+、{}、{n,}、{n,m} var str="aaaaa"; var reg=/a+/g; str.match(reg);//["aaaaa"] var reg=/a??/g;//第一个问号代表0~1个,第二个问号代表能取0就不取1去做匹配 str.match(reg);//["","","","","",""]5.2 反向引用反向引用就是正则中' \1 '用法,下列代码中(\w)首先匹配a,'\1'引用a,后面量词'+'表示出现一次获多次。var str = 'aaaaabbbbbbcccccccd'var reg = /(\w)\1+/gstr.replace(reg,'$1') // $1是第一个小括号中的内容// abcGEEK TALK06易错用法/[1-51]/.test('6')'aaa'.match(/a*?/g)false // 可匹配1,2,3,4,5,同(1-5||1)['', '', '', ''] //注意:字符串有三个a,数组有四个空字符串?END参考资料:[1]菜鸟教程:https://www.runoob.com/regexp/regexp-intro.html[2]MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test推荐阅读:Diffie-Hellman密钥协商算法探究贴吧低代码高性能规则引擎设计浅谈权限系统在多利熊业务应用分布式系统关键路径延迟分析实践百度工程师教你玩转设计模式(装饰器模式)百度工程师带你体验引擎中的nodejs
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-9 16:27 , Processed in 0.447756 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表