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

技术求助:仅隐藏<p>标签内9位以上数字,排除<span>标签内内容?

解决方案

现有脚本的问题

  • 调用text()会提取<p>下所有文本(含<span>内的内容),导致span里的数字被误处理
  • 正则/[1-9]+/仅匹配连续1-9数字,只替换第一个匹配项,且未判断数字长度

修改后的代码

$(document).ready(function() {
  $('#hidenumber').find('p').each(function() {
    // 遍历p标签下的所有子节点
    $(this).contents().each(function() {
      // 仅处理纯文本节点,跳过span等元素节点
      if (this.nodeType === 3 && this.nodeValue.trim() !== '') {
        // 全局替换所有9位及以上的连续数字为***
        this.nodeValue = this.nodeValue.replace(/\d{9,}/g, '***');
      }
    });
  });
});

代码说明

  • contents():获取目标元素下的所有子节点(包括文本节点和元素节点),避免直接提取全部文本
  • nodeType === 3:筛选出纯文本节点(元素节点的nodeType为1),确保span内的内容不被处理
  • 正则/\d{9,}/g:匹配任意连续9位及以上的数字,g修饰符实现全局替换所有符合条件的数字串
  • 直接修改文本节点的nodeValue,精准处理目标文本,不干扰子元素

效果验证

输入代码:

<p>隐藏 1234567890<span>显示 0987654321</span></p>

运行后输出:隐藏 *** 显示 0987654321,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 10:17:37