使用正确的js编写的正则表达式,但是无法匹配

其实只是自己感觉表达式正确而已,其实是错误的。

先直接说答案,.语法无法匹配\n(点语法无法匹配\n),不知道大家有没有恍然大悟。

这里举例子介绍一下:

我现在有一个字符串,例如'12!@@!333!@@!',其中!@@!是一个标记,我需要获取到夹在中间的内容,这个例子就是需要匹配到333

需要注意的是,这里只是为了演示,才使用正则表达式做这个事情的,如果可以不用正则表达式,最好还是不要用。它很消耗性能,尤其是在字符串长度不可控的时候。

例如这里想要匹配到333,完全可以这样:

javascript 复制代码
let a = '12!@@!333!@@!'
a?.split('!@@!')[1]?.split('!@@!')[0]

下面来用正则试一下

可能会这样写

javascript 复制代码
a.replace(/.*!@@!(.*)!@@!/gi, (str, p1) => p1)

对于这个demo,确实可以,现在把目标字符串改一下,现在匹配'1\n2!@@!333!@@!'这个,注意,这里有一个换行符。那么还会不会正确输出呢?输出的结果是:

javascript 复制代码
1
333

注意1和333之间有一个换行符。这个问题就是在最开始提到的点语法无法匹配\n,如果想要匹配,正则表达式需要改成这样:

javascript 复制代码
a.replace(/.*!@@!(.*)!@@!/gis

模式中添加s(单行模式)模式,这样\n就会被.匹配到了。

相关推荐
ssshooter18 小时前
看完就懂 useSyncExternalStore
前端·javascript·react.js
Live0000020 小时前
在鸿蒙中使用 Repeat 渲染嵌套列表,修改内层列表的一个元素,页面不会更新
前端·javascript·react native
柳杉20 小时前
使用Ai从零开发智慧水利态势感知大屏(开源)
前端·javascript·数据可视化
球球pick小樱花20 小时前
游戏官网前端工具库:海内外案例解析
前端·javascript·css
喝水的长颈鹿20 小时前
【大白话前端 02】网页从解析到绘制的全流程
前端·javascript
用户145369814587820 小时前
VersionCheck.js - 让前端版本更新变得简单优雅
前端·javascript
codingWhat21 小时前
整理「祖传」代码,就是在开发脚手架?
前端·javascript·node.js
码路飞21 小时前
写了个 AI 聊天页面,被 5 种流式格式折腾了一整天 😭
javascript·python
Lee川21 小时前
优雅进化的JavaScript:从ES6+新特性看现代前端开发范式
javascript·面试
颜酱21 小时前
单调队列:滑动窗口极值问题的最优解(通用模板版)
javascript·后端·算法