一尘不染

如何使正则表达式变为非贪婪?

javascript

我正在使用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|] thtr trng [| test2 |đâylàtestlần2 |]chứngkhoán[|Mỹ|
day la nuoc my |]
。但这不是我想要的结果:(。如何获得时间1的[文本]和时间2的[演示]?


在互联网上搜索信息后,我才完成^^。我编写如下代码:

var filterdata = takedata.match(/(\[.*?\])/g);
  • 我的结果是: [|cơthử|nghiệm|],[| test2 |đâylàtestlần2 |] 这是对的!但我不太了解。你能回答我为什么吗?

阅读 258

收藏
2020-05-01

共1个答案

一尘不染

非贪婪的正则表达式修饰符就像它们的贪婪对应部分,但?紧随其后:

*  - zero or more
*? - zero or more (non-greedy)
+  - one or more
+? - one or more (non-greedy)
?  - zero or one
?? - zero or one (non-greedy)
2020-05-01