javascript - 没有全局标志的正则表达式分组 OR 运算符匹配策略
问题描述
代码片段
'a b'.match(/a|b/ig)
返回
["a", "b"]
这是完全可以预料的,因为我们正在搜索带有 'a' 或 'b' 的子字符串,但为什么
'a b'.match(/(a|b)/i)
返回
["a", "a"]
作为输出, a 如何匹配两次?它不应该["a"]
只是'a b'.match(/a|b/i)
解决方案
在'a b'.match(/(a|b)/i)
您的第一个示例中,您有一个未退出的捕获组。结果数组包含完整匹配的值 (ie a
) 和第一个捕获组的值 (ie a
)。
这就是为什么你有["a", "a"]
推荐阅读
- html - 为什么我的 div 会相互重叠?
- javascript - JS await 仅在异步函数中有效。如何解决?
- c++ - C++ 创建随机形状的“blob”对象
- postgresql - 为什么我的 Kubernetes 服务在不同的子网上运行?
- flutter - Flutter:故意隐藏键盘下的Stack项目
- php - 如何从一个表中选择数据并从另一个表中获取所有关联记录?
- python - 我在尝试安装 Labelme 时遇到问题
- python - 使用带有 Python 的 API 创建数据集时出现通道信息中的 KeyError
- python - 用于训练模型的 Keras F1 分数指标
- python - 如何匹配两个numpy数组中包含的值对