jQuery를 사용하고 있습니다. 특수 문자 (시작과 끝) 블록이있는 문자열이 있습니다. 해당 특수 문자 블록에서 텍스트를 가져오고 싶습니다. 문자열 내 찾기에 정규식 객체를 사용했습니다. 그러나 두 개의 특수 문자 이상이있을 때 여러 결과를 찾도록 jQuery에 어떻게 말할 수 있습니까?
내 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>
내 JavaScript 코드 :
$(document).ready(function() {
  var takedata = $("#textcontainer").text();
  var test = 'abcd adddb';
  var filterdata = takedata.match(/(\[.+\])/);
  alert(filterdata);
  //end write js 
});
내 결과는 다음과 같습니다. [| cơ thử | nghiệm |] thờ trường [| test2 | đây là test lần 2 |] chứng khoán [| Mỹ | day la nuoc my |] . 그러나 이것은 내가 원하는 결과가 아닙니다.
인터넷에서 정보를 검색 한 후 방금 작업했습니다 ^^. 나는 다음과 같은 코드를 만든다 :
var filterdata = takedata.match(/(\[.*?\])/g);
- 내 결과는 : [| cơ thử | nghiệm |], [| test2 | đây là test lần 2 |]
맞습니다!. 그러나 나는 이것을 정말로 이해하지 못한다. 왜 그런지 대답 할 수 있습니까? 
답변
욕심없는 정규 표현식 수정자는 욕심 많은 대응 자와 비슷하지만 ?즉시 따라옵니다.
*  - zero or more
*? - zero or more (non-greedy)
+  - one or more
+? - one or more (non-greedy)
?  - zero or one
?? - zero or one (non-greedy)
답변
당신은 욕심이 문제라는 것이 옳습니다.
--A--Z--A--Z--
  ^^^^^^^^^^
     A.*Z
당신이 모두 일치 할 경우 A--Z, 당신은 사용해야 할 거라고 A.*?Z합니다 (이 ?차종 *“싫어”, 또는 게으른).
그러나 때로는 더 좋은 방법이 있습니다.
A[^Z]*+Z
이것은 부정 문자 클래스와 소유 수량자를 사용하여 역 추적을 줄이고 더 효율적일 수 있습니다.
귀하의 경우 정규식은 다음과 같습니다.
/(\[[^\]]++\])/
불행히도 Javascript 정규식은 소유 수량자를 지원하지 않으므로 다음과 관련이 있습니다.
/(\[[^\]]+\])/
또한보십시오
빠른 요약
*   Zero or more, greedy
*?  Zero or more, reluctant
*+  Zero or more, possessive
+   One or more, greedy
+?  One or more, reluctant
++  One or more, possessive
?   Zero or one, greedy
??  Zero or one, reluctant
?+  Zero or one, possessive
주저하고 소유 한 정량자는 유한 반복 {n,m}구성 에도 적용 할 수 있습니다.
자바 예제 :
System.out.println("aAoZbAoZc".replaceAll("A.*Z", "!"));  // prints "a!c"
System.out.println("aAoZbAoZc".replaceAll("A.*?Z", "!")); // prints "a!b!c"
System.out.println("xxxxxx".replaceAll("x{3,5}", "Y"));  // prints "Yx"
System.out.println("xxxxxx".replaceAll("x{3,5}?", "Y")); // prints "YY"
답변
나는 이것이 이렇게 될 것이라고 믿습니다.
takedata.match(/(\[.+\])/g);
g는 첫 경기에서 중지되지 않도록 끝은 글로벌을 의미합니다.
