gpt4 book ai didi

javascript - 字符串中的多个查找和替换

转载 作者:行者123 更新时间:2023-11-28 15:10:44 25 4
gpt4 key购买 nike

我有一个看起来像这样的字符串,

Joe Bloggs created the {project}Joe Project 1{/project} and created the brief {object}Brief Number 1{/object}

我想将其转换为如下所示的 HTML 字符串,

Joe Bloggs created the <a href="" class="project-link">Joe Project 1</a> and created the brief <a href="" class="object-link">Brief Number 1</a>

我知道我能做到

var string = "Joe Bloggs created the {project}Joe Project 1{/project} and created the brief {object}Brief Number 1{/object}";
string.replace("{project}", "<a href='' class='project-link'>");
string.replace("{/project}", "</a>");
string.replace("{object}", "<a href='' class='object-link'>");
string.replace("{/object}", "</a>");

虽然这感觉不是特别简洁,有更好的方法吗?

最佳答案

您可以使用单个正则表达式

str.replace(/{(project|object)}(.*?){\/\1}/gi, '<a href="" class="$1-link">$2</a>')

说明:

  1. {(project|object)}:匹配用大括号括起来的 projectobject 字符串。将字符串添加到第一个捕获的组中。
  2. (.*?):延迟匹配任何内容以满足条件
  3. {\/\1}:\1 这里是第一个捕获组的反向引用。因此,如果第一个捕获的组包含 object,则它将匹配 {/object}
  4. gi:g是匹配所有可能的字符串。 i 是不区分大小写的匹配。
  5. 替换部分中的
  6. $1$2分别是第一个和第二个捕获组。

var str = 'Joe Bloggs created the {project}Joe Project 1{/project} and created the brief {object}Brief Number 1{/object}';

var result = str.replace(/{(project|object)}(.*?){\/\1}/gi, '<a href="" class="$1-link">$2</a>');

console.log(result);
document.body.textContent = result; // For showing result on page

document.body.innerHTML += '<hr />' + result; // For showing HTML on page

<小时/>

正则表达式可以简写为

{((?:pro|ob)ject)}(.*?){\/\1}

关于javascript - 字符串中的多个查找和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36575650/

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