0

我想以这种形式获取所有带有 href 属性的“a”元素:http(s)://any.example.com 其中 any 可以是只包含字母和/或数字的字符串。我是 regex 和 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 );

但它不起作用。

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

4

2 回答 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
于 2015-08-02T16:47:17.737 回答
0

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

https?://[A-Za-z0-9]+\.example\.com/
于 2011-07-27T10:45:35.270 回答