gpt4 book ai didi

javascript - 帮助编写将用 标记包围某些文本的正则表达式,仅当 标记不存在时

转载 作者:行者123 更新时间:2023-11-27 22:51:15 26 4
gpt4 key购买 nike

我在一个网站上有几篇文章;所有这些帖子都是这种类型的聊天对话:

AD:嘿!
BC:怎么了?
广告:没什么
BC:好的

它们被标记为被 <p> 标记包围的简单段落。

使用 javascript 替换功能,我希望对话开头的所有“AD”实例(即,行开头的所有“AD”实例后跟“:”)被 <strong> 包围标记,但前提是实例尚未被 <strong> 标记包围。

我应该使用什么正则表达式来完成这个?我是否正在尝试执行 this 建议的操作?

我使用的代码是这样的:

var posts = document.getElementsByClassName('entry-content');

for (var i = 0; i < posts.length; i++) {
posts[i].innerHTML = posts[i].innerHTML.replace(/some regex here/,
'replaced content here');
}

最佳答案

如果AD:总是在一行的开头,那么下面的正则表达式应该可以工作,使用 m开关:

.replace(/^AD:/gm, "<strong>AD:</strong>");

您不需要检查 <strong> 是否存在因为^将匹配行的开头,并且仅当行开头后面的字符序列为 AD: 时,正则表达式才会匹配。 .

您不会反对“不要使用正则表达式来解析 HTML”的建议,因为您没有解析 HTML,您只是将一个字符串替换为另一个字符串。

正则表达式的替代方法是使用 ranges ,创建一个选择文本的范围,然后使用 execCommand使文本加粗。但是,我认为这会困难得多,您可能会面临浏览器实现的差异。正则表达式方式应该足够了。


看到您的评论后,以下正则表达式可以正常工作:

.replace(/<(p|br)>AD:/gm, "<$1><strong>AD:</strong>");

关于javascript - 帮助编写将用 <strong> 标记包围某些文本的正则表达式,仅当 <strong> 标记不存在时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2848114/

26 4 0