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

如何用XPath获取文本仅含数字的DOM节点?

用XPath直接筛选仅含数字的元素

问题背景

现有如下DOM结构:

<a>abc</a>
<a>def</a>
<a>13456</a>
<a>gh564</a>

需要直接通过XPath获取仅包含数字的<a>元素,无需先遍历所有<a>再检查文本。

解决方案

完全可行,根据你使用的XPath版本,有两种实现方式:

  • XPath 1.0(多数旧版工具/框架默认支持)
    由于XPath 1.0没有原生正则函数,可通过translate()函数实现:

    //a[translate(text(), '0123456789', '') = '']
    

    原理:把文本中的所有数字字符替换为空字符串,如果替换后结果为空,说明原文本只包含数字。

    如果要处理文本前后有空格的情况(比如<a> 789 </a>),可以先用normalize-space()去除首尾空格:

    //a[translate(normalize-space(text()), '0123456789', '') = '']
    
  • XPath 2.0及以上(新版工具/语言如Python的lxml支持)
    可以直接使用正则匹配函数matches(),写法更直观:

    //a[matches(text(), '^\d+$')]
    

    正则^\d+$表示:从文本开头到结尾,全部由一个或多个数字组成。

    同样处理空格的话:

    //a[matches(normalize-space(text()), '^\d+$')]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:07:09