regex - 正则表达式捕获开方括号和右方括号之间的内容
问题描述
我正在尝试构建一个正则表达式来捕获方括号之间的任何内容,例如以下数字。
[phone]010101[/phone] [phone]434343[/phone]
[phone]3443434[/phone]
所以匹配应该是 010101, 434343, 3443434
我cow([\s\S]*?)milk
进行了实验,这似乎可以捕获多个匹配项,并且可以与多行一起正常工作,从而实现了我真正需要的。
但是,当我尝试使用 this: 构建实际的正则表达式时\[phone\]([\s\S]*?)\[\/phone\]
,它只会捕获第一个匹配项。
我的表达可能有什么问题?
解决方案
正则表达式是正确的,但缺少全局和多行标志。在 JavaScript 中,通过向正则表达式添加g
(全局)和m
(多行)标志,可以找到预期的匹配项。
str=`[phone]010101[/phone] [phone]434343[/phone]
[phone]3443434[/phone]`;
reg = /\[phone\]([\s\S]*?)\[\/phone\]/gm;
[...str.matchAll(reg)].map(x=> x[1]); //["010101", "434343", "3443434"]
推荐阅读
- javascript - 如何拖动和变换一个盒子?
- azure-data-factory - 运行 ADF 数据流后存储在分隔文本中的无效数据
- ios - 使用primeng在iOS中放大错误
- java - 使用流从嵌套在另一个对象列表中的对象列表中过滤属性
- python - 将图像发送到 ML 服务的编码方法
- video - 除了渲染帧之外,还有什么方法可以计算 ffmpeg 输出尺寸?
- python - “MyList”对象不支持项目分配
- .net - 贝宝 .Net 库。在付款过程中禁止某些信用卡类型
- javascript - 我应该在 JSDoc 中使用与 @param 兼容的类吗?
- python - 如何在 numpy 数组中移动项目?