我不能按照我的意愿让这个捕获工作:
我的目标是在字符串中捕获第一个捕获组的长度:
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"]
有没有办法用正则表达式实现这一目标?我希望避免使用;
...
答案 0 :(得分:1)
你可以使用这样的模式:
/(_*);(\w+);(\w+);/
哪个会给你:
["_____;foo;bar;", "_____", "foo", "bar"]
此模式将符合以下顺序: