¿Cómo convertir la expresión regular en no codiciosa?

Estoy usando jQuery. Tengo una cadena con un bloque de caracteres especiales (principio y fin). Quiero obtener el texto de ese bloque de caracteres especiales. Usé un objeto de expresión regular para encontrar en cadena. Pero, ¿cómo puedo decirle a jQuery que busque múltiples resultados cuando tengo dos caracteres especiales o más?

Mi HTML:

<div id="container">
    <div id="textcontainer">
     Cuộc chiến pháp lý giữa [|cơ thử|nghiệm|] thị trường [|test2|đây là test lần 2|] chứng khoán [|Mỹ|day la nuoc my|] và ngân hàng đầu tư quyền lực nhất Phố Wall mới chỉ bắt đầu.
    </div>
</div>

y mi código JavaScript:

$(document).ready(function() {
  var takedata = $("#textcontainer").text();
  var test = 'abcd adddb';
  var filterdata = takedata.match(/(\[.+\])/);

  alert(filterdata); 

  //end write js 
});

Mi resultado es:[| cơ thử | nghiệm |] thị trường [| test2 | đây là test lần 2 |] chứng khoán [| Mỹ | día la nuoc my |] . Pero este no es el resultado que quiero :(. ¿Cómo obtener [texto] para los tiempos 1 y [demo] para los tiempos 2?

Acabo de hacer mi trabajo después de buscar información en internet ^^. Hago un código como este:

var filterdata = takedata.match(/(\[.*?\])/g);
mi resultado es:[| cơ thử | nghiệm |], [| test2 | đây là test lần 2 |] ¡esto es correcto!. pero realmente no entiendo esto. ¿Puedes responder mi por qué?

Respuestas a la pregunta(3)

Su respuesta a la pregunta