2010-07-28 35 views
6

Tôi cần lấy văn bản (nếu có) giữa các dấu ngoặc nhọn. Tôi đã tìm thấy bài đăng khác này nhưng về mặt kỹ thuật, nó không được trả lời chính xác: Regular expression to extract text between either square or curly bracketsJavascript regex - cách lấy văn bản giữa các dấu ngoặc nhọn

Nó thực sự không nói cách trích xuất văn bản. Vì vậy, tôi đã có điều này đến nay:

var cleanStr = "Some random {stuff} here"; 
var checkSep = "\{.*?\}"; 
if (cleanStr.search(checkSep)==-1) { //if match failed 
    alert("nothing found between brackets"); 
} else { 
    alert("something found between brackets"); 
} 

Làm cách nào để trích xuất 'nội dung' từ chuỗi? Và nếu tôi thực hiện thêm điều này, làm cách nào để trích xuất 'nội dung' và 'câu' từ chuỗi này:

var cleanStr2 = "Some random {stuff} in this {sentence}"; 

Chúc mừng!

Trả lời

18

Để trích xuất tất cả các lần xuất hiện giữa dấu ngoặc nhọn, bạn có thể làm một cái gì đó như thế này:

function getWordsBetweenCurlies(str) { 
    var results = [], re = /{([^}]+)}/g, text; 

    while(text = re.exec(str)) { 
    results.push(text[1]); 
    } 
    return results; 
} 

getWordsBetweenCurlies("Some random {stuff} in this {sentence}"); 
// returns ["stuff", "sentence"] 
+0

Rất cám ơn CMS. Điều này thật đúng với gì mà tôi đã tìm kiếm! – WastedSpace

+0

@WastedSpace: Bạn được chào đón !. Lưu ý rằng tôi đã thêm khai báo biến của 'văn bản' bị thiếu. – CMS

+0

Xin chào CMS, Xin lỗi là một nỗi đau (tôi nghĩ mình có thể tự mình tìm ra), nhưng làm thế nào để bạn phân tích mọi thứ từ câu đó thành các giá trị mảng như vậy (theo thứ tự này): Một số ngẫu nhiên, {stuff} , trong này, {sentence}. Cảm ơn :) – WastedSpace

0

Tạo một "bắt nhóm" để chỉ văn bản mà bạn muốn. Sử dụng hàm String.replace() để thay thế toàn bộ chuỗi chỉ với tham chiếu ngược về nhóm chụp. Bạn còn lại với văn bản bạn muốn.

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