2016-04-30 22 views
5

Tôi có một cái gì đó như chuỗi [[user.system.first_name]][[user.custom.luid]] blah blahTrích xuất dữ liệu giữa các ký tự bằng regex?

Tôi muốn để phù hợp với user.system.first_nameuser.custom.luid

tôi đã xây dựng /\[\[(\S+)\]\]/ nhưng nó phù hợp với user.system.first_name]][[user.custom.luid.

Bất kỳ ý tưởng nào tôi đang làm sai?

+0

'/ \ [\ [(\ S +?) \ ] \]/' –

+1

Po ssible trùng lặp của [Regular expression để trích xuất văn bản giữa các dấu ngoặc vuông] (http://stackoverflow.com/questions/2403122/regular-expression-to-extract-text-between-square-brackets) –

Trả lời

3

Làm cho nó không tham lam sử dụng ? để phù hợp với như vài ký tự đầu vào càng tốt. Đó regex của bạn sẽ được /\[\[(\S+?)\]\]/

var str = '[[user.system.first_name]][[user.custom.luid]] blah blah' 
 
var reg = /\[\[(\S+?)\]\]/g, 
 
    match, res = []; 
 

 
while (match = reg.exec(str)) 
 
    res.push(match[1]); 
 

 
document.write('<pre>' + JSON.stringify(res, null, 3) + '</pre>');

1

Nếu bạn cần 2 trận đấu riêng biệt sử dụng:

\[\[([^\]]*)\]\] 

Regex101 Demo

1

Tôi nghĩ /[^[]+?(?=]])/g là một trong regex nhanh. Hóa ra là hoàn thành trong 44 bước

[^[]+?(?=]]) 

Regular expression visualization

Debuggex Demo

Regex101

var s = "[[user.system.first_name]][[user.custom.luid]]", 
 
    m = s.match(/[^[]+?(?=]])/g); 
 
document.write("<pre>" + JSON.stringify(m,null,2) + "</pre>") ;

Các vấn đề liên quan