Javascript regex match()返回匹配的一部分(子集)
Javascript regex match() returning part (subset) of match
我使用的是这个JavaScript正则表达式:
var e = new RegExp('(, )?wortel')
因此,我的目标是匹配"wortel"
或", wortel"
,从而将","封装在括号中,并使用问号表示一次或零次出现。
但当我执行这行代码时:
'pus, wortel'.match(e)
我得到这个输出:
Array [ ", wortel", ", " ]
为什么第二个结果(", "
)被包括在匹配中?我的正则表达式不需要单词"wortel"吗?如何实现我想要的regex规范?
PS我已经习惯了Ruby正则表达式,因此解释其差异可能有助于
这是因为正则表达式中的可选捕获组:
var e = new RegExp('(, )?wortel');
使用(?:...)
语法的非捕获组可以避免捕获", "
:
var e = new RegExp('(?:, )?wortel');
此处(?:, )?
使其成为非捕获组。
现在的结果将只是一个元素:
Array [ ", wortel" ]
相关文章:
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- 如何检查字符串的一部分与数组匹配
- 为什么可以't我使用了AJAX响应的一部分
- 仅重新加载网页的一部分
- 如何使用ViewCompiler手动编译DOM的一部分
- Regex提取URL返回数组的一部分;未定义”;
- Html地图对象-点击地图获取id的一部分
- 在Javascript中列出顺序子集元素
- 如何使用JavaScript提取此url的一部分
- 将字符串的一部分设置为数组的一部分
- 用数字单位替换字符串的一部分
- 如何对单个页面进行密码保护(这不是身份验证系统的一部分)
- 附加和删除输入值的一部分
- 仅对标题标记的一部分使用document.write
- 如何使表格的一部分变灰
- 通过JavaScript设置的表单字段的值不会作为$_POST的一部分传递给PHP脚本
- 将d3中饼图的一部分隔开
- 如何放置单独的ajax调用,使页面的一部分完全响应,而另一部分仍在加载
- 移除字符串(如果找到)移除JS中字符串的一部分
- Javascript regex match()返回匹配的一部分(子集)