为什么我的正则表达式捕获组只在匹配多个部分时捕获字符串的最后一部分
Why is my regex capture group only capturing the last part of the string when it matches multiple parts?
我尝试过的
var test = "asdfdas ABCD EFGH";
var regex = /^'S+( [A-Z]{4})+$/;
// Also tried: /^'S+( [A-Z]{4})+$/g
// And: /^'S+( [A-Z]{4})+?$/g
var matches = test.match(regex);
我做了一个JSFiddle。
我的期望
变量matches
应变为以下数组:
[
"asdfdas ABCD EFGH",
" ABCD",
" EFGH"
]
我得到什么
变量matches
实际上是这个数组:
[
"asdfdas ABCD EFGH",
" EFGH"
]
我的想法
我的猜测是,捕获组和/或$
逻辑缺少一些东西。任何帮助将不胜感激。(我知道我可以弄清楚如何在多个正则表达式中做到这一点,但我想了解这里发生了什么。
是的,这正是它的作用;你没有做错任何事。当一个组被赋予一个量词时,它只捕获它的最后一个匹配项,这就是它在 JavaScript 中所做的一切。一般解决方法是使用多个正则表达式,如您所说,例如
var test = "asdfdas ABCD EFGH";
var match = test.match(/^'S+((?: [A-Z]{4})+)$/); // capture all repetitions
var matches = match[1].match(/ [A-Z]{4}/g); // match again to get individual ones
相关文章:
- 单击时切换两个图像
- 当单击第一个李时,它显示内容一,当单击第二个李时,它显示内容二
- 分页:如何用AJAX加载第一个页面
- 当同一浏览器的两个实例浏览时,Javascript页面如何具有唯一的ID
- 使用Javascript,如何显示<tr>在另一<tr>悬停时,隐藏第二个<tr>
- 为变量分配多个nodejs导出返回值时出现问题
- JavaScript:当有两个B类元素时,如何在id X中的B类中选择A类
- 在 Jquery/Javascript 中使用多个 OR (||) 运算符时如何设置变量
- 在更改名称时,使用ajax jsp在下拉菜单中填充多个文件夹的数据
- 当多个图像在源文件中时,如何从源文件中选择特定的图像
- sailsjs在创建两个模型时的错误处理
- ng disabled在放入多个表达式时失败
- 当两个单独的单词被放在目标上时,使用Jquery获取一个值
- Last.fm API发送2个曲目时,我要求一个,如果我正在听一首歌
- 比较Javascript中的两个字符串时出错
- 当加载几个js文件时,defer属性应该如何工作
- CSS3:当页面向下滚动到第一个视口时,是否可以在元素上触发转换
- 当页面包含指向一个图像的多个链接时,fancyBox会复制缩略图辅助图像
- 如何分多个步骤收集表单数据并进行汇总
- 当表单元格匹配时,数据表突出显示第一个分页页以外的行