使用正确的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就会被.匹配到了。

相关推荐
胡萝卜术18 分钟前
从零搭建生成式AI项目:OpenAI + Node.js 环境配置与密钥安全实践
前端·javascript·面试
柒和远方18 分钟前
每日一学V012: 从 Python 到 Node.js:一个 AI Native 开发者的 JavaScript 调用 LLM 实战
javascript·node.js·api
STDD23 分钟前
Farming Simulator 25(模拟农场 25) Linux 专服搭建完全指南
linux·运维·javascript
超人气王1 小时前
新手学前端 JavaScript 类型判断:一篇彻底搞懂 typeof、instanceof 和 Object.prototype.toString
前端·javascript
丷丩1 小时前
MapLibre GL JS第35课:显示带地形高程(三维地形)的卫星影像
javascript·gis·map·mapbox·maplibre gl js
三乐2282 小时前
node不认识类型?多半是没用上这几段代码
javascript
前端毕业班2 小时前
uni-app 小程序样式隔离实践指南和原理分析
前端·javascript·vue.js
吃口巧乐兹2 小时前
热加载与插件热插拔:Debug 模式 × E-Spi × H-Spi 全解析
javascript
想不到ID了3 小时前
第八篇: 登录注册功能实现
java·javascript
ZC跨境爬虫3 小时前
跟着 MDN 学CSS day_37:(从文档流到粘性定位的底层原理)
前端·javascript·css·ui·html