You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript正则表达式将修改后文本放回原HTML标签?

解决Wix Studio HTML标签内文本替换问题

问题描述

从Wix Studio通过$w('Text').html获取HTML字符串(示例格式:<h1 class="wixui-rich-text__text">Add a Title</h1>),需要把标签内的每个字母用<span>包裹后放回原标签。目标标签包含<h1>至<h6>、<p>,且禁止使用jQuery。目前已能剥离标签处理文本,但无法将处理后的内容归位到原标签结构中。

现有代码

// 从Wix通过Wix Editor Elements ($w) API获取字符串
var html = $w('Text').html;

var string = html.replace(/(&lt;([^&gt;]+)&gt;)/ig, ''), 
    wrap = string.replace(/\w/g, "<span>$&</span>");

解决方案

通过正则匹配完整的标签结构,捕获开始标签、标签名、内部文本和结束标签,再将处理后的文本拼接回原标签:

var html = $w('Text').html;

// 匹配目标标签的完整结构,拆分出各部分内容
var processedHtml = html.replace(/(<([h1-6p][^>]+)>)([\s\S]*?)(<\/\2>)/i, function(match, openTag, tagName, content, closeTag) {
    // 把文本内容的每个字母用<span>包裹
    var wrappedContent = content.replace(/\w/g, "<span>$&</span>");
    // 拼接回完整的HTML结构
    return openTag + wrappedContent + closeTag;
});

// 将处理后的HTML重新赋值给组件
$w('Text').html = processedHtml;

代码说明

  • 正则/(<([h1-6p][^>]+)>)([\s\S]*?)(<\/\2>)/i作用:
    • <([h1-6p][^>]+)>:匹配<h1>至<h6>或<p>的开始标签,同时捕获标签名和自带属性
    • ([\s\S]*?):非贪婪匹配标签内所有内容(包含换行符)
    • <\/\2>:匹配对应结束标签,\2引用之前捕获的标签名,确保标签闭合正确
  • 回调函数处理捕获到的文本内容后,重新拼接回原标签结构,完整保留原标签的属性
  • 最后将处理后的HTML重新赋值给Wix组件的html属性

内容的提问来源于stack exchange,提问作者Marc Sanders

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 21:22:56