我无法让此捕获按我希望的方式工作:
我的目标是在字符串中捕获第一个捕获组的长度:
var regex = /(_)?;([\w]+);([\w]+);/;
var string = "____;foo;bar;";
var matches = regex.exec(string);
console.log(matches); // outputs ["_;foo;bar;", "_", "foo", "bar"]
如您所见,matches[1]
包含下划线的捕获组,但给我匹配的字符,而不是所有下划线。我期望的是这样的结果:
["_;foo;bar;", "_____", "foo", "bar"]
有没有办法用正则表达式来实现这一点?我宁愿避免用 ;
...
最佳答案
您可以使用这样的模式:
/(_*);(\w+);(\w+);/
这会给你:
["_____;foo;bar;", "_____", "foo", "bar"]
此模式将匹配以下序列:
- 零个或多个下划线,在组 1 中捕获
- 分号
- 第 2 组中捕获的一个或多个单词字符
- 分号
- 第 3 组中捕获的一个或多个单词字符
- 分号
关于javascript - 正则表达式捕获 : get the whole match in a capturing group,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19221452/