document.evaluate regexes

Я хочу получить все элементы "a" с атрибутом href в этой форме: http(s)://any.example.com, где any может быть строкой, содержащей только буквы и / или цифры. Я новичок в регулярных выражениях и XPath, поэтому я не могу понять это правильно. Я понял это регулярное выражение, но я не уверен, что это на 100% правильно: Code:

/(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 );

но это не работает

Буду признателен, если кто-нибудь сможет мне помочь.

2 ответа

Решение

На сегодняшний день похоже, что браузеры в настоящее время не поддерживают XPATH 2. Применение регулярных выражений к атрибутам поддерживается только в XPATH 2.0.

Вы хотите применить регулярное выражение после фильтрации для элементов с использованием XPATH 1.0 (без регулярного выражения), выполнить итерации по элементам и дополнительно отфильтровать элементы, используя вместо этого регулярное выражение уровня JS

Рекомендации:

  1. /questions/16518825/xpath-ispolzovanie-regulyarnogo-vyirazheniya-v-funktsii-soderzhit/16518832#16518832
  2. /questions/31495489/kakie-brauzeryi-podderzhivayut-xslt-20/31495506#31495506
  3. https://developer.mozilla.org/en-US/docs/Web/API/Document/evaluate

Ваше регулярное выражение выглядит немного странным и чрезмерно сложным.
Попробуй это:

https?://[A-Za-z0-9]+\.example\.com/
Другие вопросы по тегам