将 document.evaluate 与包含正则表达式的 XPath 一起使用

问题描述 投票:0回答:2

我想以这种形式获取所有具有 href 属性的“a”元素:

http(s)://any.example.com
,其中
any
可以是仅包含字母和/或数字的字符串。

我是正则表达式和 XPath 的新手,所以我无法正确理解。

我找到了正则表达式,但我不确定它是否 100% 正确:

/(http|https)://+[A-Za-z0-9]+\.example+\.+com/

所以 XPath 看起来像这样:

document.evaluate("//a[@href='/(http|https)://+[A-Za-z0-9]+\.google+\.+com/']", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);

但是不起作用。

如果有人能帮助我,我将不胜感激。

javascript regex dom xpath document.evaluate
2个回答
1
投票

截至今天,浏览器目前似乎不支持 XPATH 2。仅在 XPATH 2.0 中支持对属性应用正则表达式

您可能希望在使用 XPATH 1.0(无正则表达式)过滤元素后应用正则表达式,迭代元素并使用 JS 级别正则表达式进一步过滤元素

参考资料:

  1. https://stackoverflow.com/a/21405499/211794
  2. https://stackoverflow.com/a/6282877/211794
  3. https://developer.mozilla.org/en-US/docs/Web/API/Document/evaluate#Browser_compatibility

0
投票

你的正则表达式看起来有点不对劲,而且过于复杂。
试试这个:

https?://[A-Za-z0-9]+\.example\.com/
© www.soinside.com 2019 - 2024. All rights reserved.