javascript - 正则表达式捕获 : get the whole match in a capturing group

标签 javascript regex

我无法让此捕获按我希望的方式工作:

我的目标是在字符串中捕获第一个捕获组的长度:

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/

相关文章:

javascript - 正则表达式不替换所有事件

python - 仅删除特定位置的逗号

java - 如何替换: [text](link) with <a href ="link">text</a> in java?

Java - 为什么这种模式匹配不起作用?

c# - 查找 HTML 文件中字符串的确切出现位置

javascript - 如何使用 CasperJS 获取 innerHTML?

javascript - for in 循环在 jsx 中得到了意外的标记

javascript - 为什么我不能在具有 'contenteditable' 属性的 HTML 按钮的文本中添加空格?

javascript - 如何在元素上添加监听器以在元素发生任何更新时触发事件?

regex - vba正则表达式最后一次出现