gpt4 book ai didi

javascript - 匹配字符串中模式的多个实例

转载 作者:行者123 更新时间:2023-12-03 05:56:25 26 4
gpt4 key购买 nike

我正在尝试将辅助字符串(有点像 Stack 的[在此处输入链接描述][1])保存到数据库,并在检索/查看时将它们编译为 HTML。示例文本为:

var str = 'This is just a sample text followed by an {{image: imageUrl1}}. And here is another {{image: imageUrl2}}.';

我尝试了以下正则表达式:

str.match(`/(\{\{image:)[^(.*\}\})]*.*(\}\})/g`);

但我只是得到["{{image: imageUrl1}}。这是另一个{{image: imageUrl2}}"]

正则表达式应该是什么模式才能使结果为 ["{{image: imageUrl1}}", "{{image: imageUrl2}}"]

最佳答案

正则表达式是贪婪的(匹配所有可能的结果以满足条件)。这意味着,正则表达式将匹配从 {{ 到最后一个 }} 的字符串。要仅匹配第一个 }} 符号,请在 * 量词后面添加 ? 量词使其变得惰性。

/{{image:[^}]*?}}/g

这里是直播demo关于 RegEx101

说明:

  1. {{image:: 匹配 {{image: 文字
  2. [^}]*?:延迟匹配除 } 之外的任何内容
  3. }}:匹配 }} 文字

请注意,用反引号包围正则表达式使其成为字符串。使用正则表达式文字语法。

var str = 'This is just a sample text followed by an {{image: imageUrl1}}. And here is another {{image: imageUrl2}}.';

var matches = str.match(/{{image:[^}]*?}}/g);
console.log(matches);

<小时/>

要提取 URL,请使用捕获组并获取第一个捕获组。

/{{image:\s*([^}]*?)}}/

var str = 'This is just a sample text followed by an {{image: http://someURLHERE.domain}}. And here is another {{image: imageUrl2}}.';

var regex = /{{image:\s*([^}]*?)}}/g;
var match = '';
var urls = [];

while (match = regex.exec(str)) {
urls.push(match[1]);
}

console.log(urls);

关于javascript - 匹配字符串中模式的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39908689/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com