如何用 HTML 标签替换包含字符串的文本?
How to replace text containing string with a HTML tag?
我正在尝试找出如何用 HTML 标记替换页面上与特定短语匹配的任何文本实例 - 内容应保持不变。
bold("Hello")
上面的代码应该替换为:
<b>Hello</b>
这是我目前使用的代码:
node.data = node.data.replace('bold("','<b>');
node.data = node.data.replace('")','</b>');
问题在于,它不是创建 <b>
标签,而是将 <
和 >
转换为它们的 HTML 实体 - < >.
此外,将 ")
的所有实例替换为 </b>
似乎不切实际。
实现此目标的最佳方法是什么。
如有任何帮助,我将不胜感激,谢谢!
正则表达式可帮助您解决替换问题。
var str = 'bold("Hello")';
var regex = /bold\("(.*?)"\)/;
str = str.replace(regex, "<b></b>");
console.log(str);
我假设您的意思不是字面意义上的页面上的所有文本,而是给定元素内的所有文本。 DucFilans 正则表达式是正确的,我将稍微修改他的答案以提供完整的工作解决方案:
var parserRules = [
{ pattern: /bold\("(.*?)"\)/g, replacement: '<b></b>' },
{ pattern: /italics\("(.*?)"\)/g, replacement: '<i></i>' }
];
document.querySelectorAll('.parse').forEach(function(tag) {
var inner = tag.innerHTML;
parserRules.forEach(function(rule) {
inner = inner.replace(rule.pattern, rule.replacement)
});
tag.innerHTML = inner;
});
<div class='parse'>
<div>bold("Hello") world <p> Rose italics("pink") slow bold("!") </p> </div>
<div>bold("astiago") cheeeeeeese!</div>
</div>
您可以在 parserRules 数组中定义正则表达式模式和替换规则,然后将解析任何标有 'parse' class 的元素。一个警告是这将替换所有子元素,因此如果您依赖附加到子元素或类似内容的侦听器,您也需要注意这一点。
我正在尝试找出如何用 HTML 标记替换页面上与特定短语匹配的任何文本实例 - 内容应保持不变。
bold("Hello")
上面的代码应该替换为:
<b>Hello</b>
这是我目前使用的代码:
node.data = node.data.replace('bold("','<b>');
node.data = node.data.replace('")','</b>');
问题在于,它不是创建 <b>
标签,而是将 <
和 >
转换为它们的 HTML 实体 - < >.
此外,将 ")
的所有实例替换为 </b>
似乎不切实际。
实现此目标的最佳方法是什么。
如有任何帮助,我将不胜感激,谢谢!
正则表达式可帮助您解决替换问题。
var str = 'bold("Hello")';
var regex = /bold\("(.*?)"\)/;
str = str.replace(regex, "<b></b>");
console.log(str);
我假设您的意思不是字面意义上的页面上的所有文本,而是给定元素内的所有文本。 DucFilans 正则表达式是正确的,我将稍微修改他的答案以提供完整的工作解决方案:
var parserRules = [
{ pattern: /bold\("(.*?)"\)/g, replacement: '<b></b>' },
{ pattern: /italics\("(.*?)"\)/g, replacement: '<i></i>' }
];
document.querySelectorAll('.parse').forEach(function(tag) {
var inner = tag.innerHTML;
parserRules.forEach(function(rule) {
inner = inner.replace(rule.pattern, rule.replacement)
});
tag.innerHTML = inner;
});
<div class='parse'>
<div>bold("Hello") world <p> Rose italics("pink") slow bold("!") </p> </div>
<div>bold("astiago") cheeeeeeese!</div>
</div>
您可以在 parserRules 数组中定义正则表达式模式和替换规则,然后将解析任何标有 'parse' class 的元素。一个警告是这将替换所有子元素,因此如果您依赖附加到子元素或类似内容的侦听器,您也需要注意这一点。