2013-10-07 55 views
1

我不能让这个拍摄工作,我想:正则表达式捕获:获得捕获组全场比赛

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

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"] 

是否有一种方法可以用正则表达式来实现?我宁愿避免分裂与;串...

回答

1

你可以使用这样的模式:

/(_*);(\w+);(\w+);/ 

,这将给你:

["_____;foo;bar;", "_____", "foo", "bar"] 

此模式将匹配下列顺序:

  • 0个或多个下划线,在组1中捕获
  • 分号
  • 一个或多个单词字符,在组捕获2个
  • 分号
  • 一个或多个单词字符,在组捕获3
  • 分号
+0

谢谢您的明确回答,那就是我需要的。 – mguimard