正则表达式(上篇)

写在最前面的话

已经有近2个星期没有更新博客了,前期一直在培训、考核以及熟悉项目组项目,想起前两天在园子里学习到了一个新词语——“不明觉厉”,说句实话,我目前就处于这个状态,只要是别人知道的某个非常牛东西就算我一点也不明白也会非常厉害,感觉这个状态可能要持续好久厄!终于到了周末,好好休息下,顺便写点东西、、、、

今天写点关于正则表达式的知识

正则表达式小知识

对于正则表达式,我们必须理解一点:正则表达式是对字符串操作的逻辑公式,我们可以使用它构建一个规则,然后验证某字符串是否满足该规则(也就是我们常会说匹配),因此我们可以将它当作一个工具来使用。同时正则表达式操作的对象主要是文本,所以但凡与文本相关的逻辑操作,我们都可以尝试用正则试试。其实正则这个东东也很令人头疼,写错一点点结果就会不对,而且表达式不易记住,有点坑。不过我们不能因为它的缺点而放弃它的学习对吧,它在很多地方都有广泛使用,下面我们就进入学习下吧!

正则表达式怎么写?

由于正则表达式这个东东是属于那种实用型的知识,用实例讲解更易理解,毕竟看到效果嘛!!!

示例一:

var regx = new RegExp("C");
console.log(regx.test("ABCD"));    

上述例子我们定义了一个最简单的正则表达式regx,它的目的就是匹配任意字符串中是否含有“C”字符,输出结果为true,如果我们将C改为E,则结果为false

示例二:

var regx = new RegExp("ello","gi");
var test = "hello,my name is ello !".match(regx);
console.log(test);

 

上述例子结果为["ello", "ello"],我们可以看到匹配了两个ello,一个是hello中的ello,另一个是单独的ello,假若我没有加上第一句中的第二个参数gi,那么的得到的结果就是["ello"],因为如果我不加gi,正则表达式默认是匹配到第一个满足条件的结果就终止,使用gi参数就是设置正则为全局匹配。

示例三:

在写示例三之前我必须首先告诉大家几个常用的元字符:

. 匹配除换行符以外的任意字符
\w匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d匹配数字
\b匹配单词的开始或结束
^匹配字符串的开始
$匹配字符串的结束

 

看到这里我们,我们试着写一个匹配QQ的正则,我们知道比较常见的QQ位数是8到12位,于是我们可以这么来写 ^\d{8,12}$,在这里我们用到了上面表格中的元字符,正则表达式前面的^和末尾的$分别是正则的开始和结束,紧接着\d开始匹配数字(也就是0到9咯),在后面有一对花括号,它的意思就是数字可以重复8次到12次之间,如果我们花括号中只写8,那么表明它只可重复8次,如果我们写成^\d{8,}$则它可以重复8次或8次以上。

接下来写一个匹配区号只有3位,号码位数为7位的的电话号码的正则:

^\(?0\d{2}[) -]?\d{7}$  //注意,红色块显示的是三个字符 )、空格、-

我们来理解一下下:首先我们是我们的正则开始,接着是一个转义字符,允许重复一次或零次,然后匹配0,接着重复数字两次,紧接着出现一对[ ],出现里头三个字符其中的一个或不出现,最后匹配7个数字,例如这个正则表达式可以匹配027-8576812;(027)9676143;02789780098等等

示例四:

好吧现在给一个我们经常用的邮箱验证正则:

^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$

 将这个正则分解开好看多了,当然啦,这个正则表达式是最通用的那种啦,我们常见的其中还会有限定条件。

示例五:

^(\d{1,3}\.){3}\d{1,3}$  //IP地址

^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$  //18位身份证号码

最后需要注意点是我们如果需要匹配的字符中有元字符,我们需要使用转义字符"\"

弱弱的结尾了、、、

今天就到这里吧,接下来的下篇我会详细的写点关于正则的示例,进一步理解正则表达式,包括分支分组以及复杂的正则理解和写出自己实际需要的正则表达式。

说句实话,正则表达式就是个怪异的语言,需要多加理解和运用,当然咯好多我也木有记住,忘记了总是得去查!

------如果你觉得此文对你有所帮助,别忘了点击下右下角的推荐咯,谢谢!------

内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署和Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础和Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现和系统性能优化部分,结合代码调试与监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值