2013-10-07 94 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