就因为这三个知识点,我彻底学废了”正则表达式“

前言

曾经我一度对正则表达式有种恐惧和厌恶感,为啥?因为总感觉这玩意很难,很枯燥,看到别人写出贼牛逼的正则,我想啥时候我能像他们一样优秀。直到我看到了这三个知识点。。。

只需要花10分钟时间,你可以收获

  1. 正则表达式中的位置匹配原理与知识
  2. 正则表达式中的字符串匹配原理与知识
  3. 正则表达式中的括号的妙用
  4. 14个常见正则表达式解析帮助理解知识点

相信我,看完这篇文章,对于工作中90%以上的正则问题你都能找到解决思路和方案。

相信我,看完这篇文章,对于工作中90%以上的正则问题你都能找到解决思路和方案。

相信我,看完这篇文章,对于工作中90%以上的正则问题你都能找到解决思路和方案。

默念三声

正则表达式是匹配模式,要么匹配字符,要么匹配位置

正则表达式是匹配模式,要么匹配字符,要么匹配位置

正则表达式是匹配模式,要么匹配字符,要么匹配位置

1.搞懂位置能干啥?

题目1:数字的千分位分割法

将123456789转化为123,456,789

题目2:手机号3-4-4分割

将手机号18379836654转化为183-7983-6654

题目3:验证密码的合法性

密码长度是6-12位,由数字、小写字符和大写字母组成,但必须至少包括2种字符

这些题时常出现在面试中,日常业务也少不了它的身影。搞懂位置,不仅能搞定面试,业务你也将写的飞起

啥是位置?

正则表达式是匹配模式,要么匹配字符,要么匹配位置。那什么是位置呢?

如下图箭头所指,位置可以理解为相邻字符之间的位置

image.png

咱们可以和空字符串进行类比, 字符的首尾、间隙都可以用空字符串进行连接。

'hello' === '' + 'h' + '' + 'e' + '' + 'l' + '' +  'l' + '' + 'o' + '' // true

复制代码

image.png

有哪些位置?

正则中常用来表示位置的符号主要有:

^、$、\b、\B、?=p、(?!p)、(?<=p)、(?<!p)

接下来咱们就一个个把他们全整明白。

^

脱字符,匹配行的开头

例如要在hello的开头塞一个笑脸(😄 )怎么搞,这个肯定难不倒你


let string = 'hello'

console.log(string.replace(/^/, '😄')) // 😄hello


复制代码

$

美元符号,匹配行的结尾

同理想在hello的结尾塞一个笑脸(😄 )呢?


let string = 'hello'

console.log(string.replace(/$/, '😄')) // hello😄


复制代码

这两个表示首尾位置的符号,相信大家一定都很熟悉。

\b

单词的边界,具体讲有三点规则。

① \w和\W之间的位置

② ^与\w之间的位置

③ \w与$之间的位置

比如藏在你们电脑上学习教程文件夹中的某一集种子长这样xxx_love_study_1.mp4,想要把他变成❤️xxx_love_study_1❤️.❤️mp4❤️怎么搞呢?

image.png

其实只需要执行一行代码就行


'xxx_love_study_1.mp4'.replace(/\b/g, '❤️') // ❤️xxx_love_study_1❤️.❤️mp4❤️

复制代码

画图理解就是

image.png

\B

非单词的边界,也就是\b反着来的意思,它的规则如下:

① \w与\w之间的位置

② \W与\W之间的位置

③^与\W之间的位置

④\W与$之间的位置

同样还是用学习教程文件夹中的种子,稍稍改造一下,当执行这行代码之后,会输出啥?

'[[xxx_love_study_1.mp4]]'.replace(/\B/g, '❤️')

复制代码

....

没错,满满的都是爱啊!!!,都快看不清名字了。


❤️[❤️[x❤️x❤️x❤️_❤️l❤️o❤️v❤️e❤️_❤️s❤️t❤️u❤️d❤️y❤️_❤️1.m❤️p❤️4]❤️]❤️

复制代码

画图解释如下

image.png

(?=p)

符合p子模式前面的那个

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值