js实现查找或匹配一串字符串中,某个字符后面的所有字符,引出 => 正则中的肯定预查和否定预查是什么意思(ios 和 safari不支持会报错)

js实现查找或匹配一串字符串中,某个字符后面的所有字符,引出 => 正则中的肯定预查和否定预查是什么意思(ios 和 safari不支持会报错)先列举一个小例子哈 请把下面中第二个 后面的字符串全部匹配出来 let str hello world 1 我爱你中国 123 name zhaoyunchong 也就是说 输出的结果应该是 1 我爱你中国 123 name zhaoyunchong 可能有的同学会开始思考

大家好,我是讯享网,很高兴认识大家。

先列举一个小例子哈

  1. 请把下面中第二个 # 后面的字符串全部匹配出来
let str = "hello #world #1我爱你中国123?name=zhaoyunchong"

讯享网

也就是说 输出的结果应该是。
1我爱你中国123?name=zhaoyunchong

怎么说呢 当然可以。
但是换种思路 我们也可以通过正则进行匹配呢。
我这里先把一个我自己写的拿出来

正则表达式大概就是这样。 /(?<=#)1\S+$/

讯享网let str = "hello #world #1我爱你中国123?name=zhaoyunchong"; console.log(str.match(/(?<=#)1\S+$/)); 

输出的好像就是我们想要的呢
在这里插入图片描述
讯享网

我先不说为啥上面的那个可以哈。
我们先来讲解一些其他的关于正则的知识
相信 很多同学 可能在项目中会碰见一些比较奇怪的正则
中含有
这些奇怪的东东到底是什么呢。
*?: ?! ?<=. ?= ?!=
不过先不急。 我们一个一个进行讲解(或者说举例子说明你就知道了)。讲解完可能上面的那个就知道怎么处理了

?:pattern

这个大概的意思就是 匹配?: 后面的但不获取匹配的结果
看完之后是不是很懵逼。我们举个例子就知道了
我们匹配一个网址的时候 是要考虑协议
这个网址有可能是 http 或者 https
正常来说 可以这样写
http://www.baidu.com

(http|https):// or http(s)?:// 
讯享网http(?:s) 

可能有的同学就纳闷了
http(?😒). 这两个有啥区别呢 http(s)?😕/
区别就是 第二个 还会匹配到s
它不仅会匹配到 https 还会吧 s 也匹配到
大家看下 下面的匹配结果。是不是就清楚了呢
在这里插入图片描述

?=pattern 正向肯定预查

大概意思就是,匹配pattern的字符串开始处匹配查找字符串,
通俗的说就是从pattern开始向前匹配,但是和?: 一样是一个非获匹配的结果
举个例子吧

let str = "zhao#yun1chong3"; 

我们写一个 正则匹配 要匹配 # 和 1 前面的字符
那么输出结果是 zhao yun
那么按照这个要求写的话 正则就是下面的这个了

讯享网str.match(/\w+(?=#|1|2)/g 

按照我们上面说的就是 从。# 或者 数字 1 开始 向前匹配字符。那么就是输出
zhao yun
在这里插入图片描述

?!pattern 正向否定预查

let str = "nchong#zchong1mchong2" 
讯享网console.log(str.match(/[nzm]chong(?![#1])/g)); 

这样就是 吧 1 和 #这两种情况都排出了。 是不是正常匹配到了呢
在这里插入图片描述
至于 反向肯定预查 和 反向否定预查则是和上面的两个查找方向刚好相反,上面的两个例子懂了 自然就举一反三了。我就不一一赘述了

看完以后我们再看下上面的那个例子 是不是就有点头绪了,根据正则就能写出来了。

其实有的时候能用正则匹配写匹配一些复杂可能的情况还是很有用的 哈哈

就是正则说实话学习起来 也不简单呢

关注我。持续更新 前端知识

小讯
上一篇 2025-03-12 14:38
下一篇 2025-03-20 20:01

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/54629.html