Показать сообщение отдельно
  #3 (permalink)  
Старый 24.01.2018, 22:11
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

Для себя можно так:
var selection = getSelection();
new Set(
  document.body.textContent.match(/\b10\.[^\/\s]+\/[^\/\s]+/g)
).forEach(
  match => {
    while(find(match)){
      var link = document.createElement('a');
      link.href = 'http://dx.doi.org/' + match;
      selection.getRangeAt(0).surroundContents(link);
    }
    selection.collapse(document.body);
  }
);
window.scrollTo(0, 0);

Если текст простой - можно обойтись перебором текстовых нод.
Если регулярка сложная - нужно добавить обработку случаев, когда одно совпадение находится в другом.)
__________________
29375, 35
Ответить с цитированием