2013-07-19 20 views
5

Tôi đang cố viết regex sẽ tìm tất cả các giá trị giữa các dấu ngoặc nhọn không bắt đầu bằng "my:". Ví dụ: tôi muốn chụp {this} nhưng không chụp {my:monkey}.Javascript regex để tìm các từ không bắt đầu bằng "my:"

Các mô hình để chụp tất cả mọi thứ là:

\{([^\}]*)\} 

Tôi đang gặp rắc rối khi muốn làm việc. Ảnh gần nhất của tôi cho đến thời điểm này là:

\{[^my:]*([^\}]*)\} 

Điều này không thành công vì chỉ bỏ qua các thẻ bắt đầu bằng "m", "y" hoặc ":".

tôi chắc chắn rằng có một lệnh Tôi nhìn để điều trị "của tôi:" như một khối ..

(Lưu ý: Phải làm việc cho Javascript)

+0

Bạn đang cố gắng làm gì với ứng dụng này? Chỉ cần kiểm tra chuỗi hoặc làm một số loại thay thế? –

Trả lời

0

Bạn có thể làm một cái gì đó như thế này:

var input = "I want to capture {this} but not {my:monkey}"; 
var output = input.replace(/{(my:)?([^}]*)}/g, function($0, $1, $2) { 
    return $1 ? $0 : "[MATCH]"; 
}); 
// I want to capture [MATCH] but not {my:monkey} 
Các vấn đề liên quan