Muszę znaleźć na stronie HTML wszystkie fragmenty tekstu pasujące do określonego wyrażenia regularnego (to znaczy, muszę zignorować tagi, aby '< span>First name: < /span>< br/>< b>John< /b>'
pasował do 'First name: John'
), a następnie podświetlić znalezione fragmenty (według dekorowanie nowymi elementami i stosowanie niestandardowych stylów css) i umiejscowienie tych fragmentów, np być w stanie przewinąć je do widoku. Funkcjonalność jest podobna do tego, co robi wtyczka przeglądarki Skype z numerami telefonów znalezionymi na stronie.Znajdź element DOM zawierający ciąg zgodny z wyrażeniem regularnym
Odpowiedz
Czy próbowałeś czegoś takiego?
document.body.innerHTML.replace(/<\/?[^>]+>/g, '')
To nie tylko zniszczy każdy słuchacz, który został dodany dynamicznie, ale prawdopodobnie zepsuje elementy, atrybuty i właściwości na różne sposoby w różnych przeglądarkach dla dowolnej strony z nietrywialną treścią. – RobG
Potrzebuję zachować informacje o tym, gdzie w DOM moje wyniki wyszukiwania znajdują się, lub mogę zrobić document.body.innerText.match() - nie to, czego potrzebuję. –
Można też rekurencyjnie schodzić DOM patrząc na textContent lub innerText nieruchomość (odpowiednio) elementów, lub użyć pętli nad kolekcji zwrócony przez getElementsByTagName. Tak czy inaczej, gdy już zidentyfikujesz tekst i element nadrzędny, musisz dowiedzieć się, jak go zastąpić.
Jakie są Twoje wymagania dotyczące struktury dokumentu w zamienniku, jeśli ciąg jest podzielony na jeden lub więcej elementów?
Powiedziałbym, że przy użyciu podejścia skoncentrowanego na węźle, a skoncentrowanego na łańcuchach, zapewni się większą przenośność. Poza tym jest to aspekt DOM, z którym większość ludzi ma problem z :). –
Tak, ale OP chce łańcucha, nawet jeśli jest podzielony na więcej niż jeden element, więc samo spojrzenie na węzły tekstowe nie wykona zadania. Nie wiem, jak zamierza radzić sobie z rozszczepionymi łańcuchami, ale przynajmniej powyższa metoda znajdzie najbliższego przodka, który ma cały ciąg. – RobG
Można użyć jQuery selectors uzyskać <b>
tagi zawierające John
które przychodzą po <span>
znacznikiem, który zawiera First name:
, a następnie na przykład zastosować styl:
$("span:contains('First name:') ~ b:contains('John')").css('color','red');
Oto uruchomiony przykład: http://jsfiddle.net/XzwNj/
To był tylko przykład, a nie konkretny przypadek –
- 1. Znajdź ostatni mecz z pythonem regularnym wyrażeniem
- 2. Zapytanie Cypher z wyrażeniem regularnym
- 3. Logstash, jeśli instrukcja z wyrażeniem regularnym, np.
- 4. Sprawdzanie znaków diakrytycznych z wyrażeniem regularnym
- 5. Podziel przez sufiks z wyrażeniem regularnym Python
- 6. Jak utworzyć pętlę z wyrażeniem regularnym?
- 7. Znajdź klucz zawierający ciąg w słowniku swift
- 8. Jak ustalić, czy ciąg nie jest wyrażeniem regularnym?
- 9. Jak dopasować końcowe podawanie do linii z wyrażeniem regularnym?
- 10. Znajdź javascript, który zmienia element DOM
- 11. Ograniczenie liczby słów w odpowiedzi wyrażeniem regularnym
- 12. Czy element DOM może mieć identyfikator zawierający spację?
- 13. Korzystanie z pliku Directory.GetFiles z wyrażeniem regularnym w języku C#?
- 14. Jak przekonwertować z podkreślenia na wielbłądzie z wyrażeniem regularnym?
- 15. Sprawdź, czy ciąg znaków jest równy jednemu z łańcuchów znaków (z wyrażeniem regularnym).
- 16. Wybór wielokrotny z wyrażeniem regularnym (wysublimowany tekst 2)
- 17. Dopasowywanie dokładnie jednego wystąpienia w ciągu znaków z wyrażeniem regularnym
- 18. pandas extractall() nie wyodrębnia wszystkich przypadków z wyrażeniem regularnym?
- 19. C# Jak usunąć komentarze XML/HTML z wyrażeniem regularnym
- 20. Jak znaleźć nakładające się mecze z wyrażeniem regularnym?
- 21. Sprawdzanie poprawności adresu e-mail z wyrażeniem regularnym w Bash
- 22. Czy można wyliczyć odległość edycyjną między wyrażeniem regularnym a łańcuchem?
- 23. Znajdź element DOM według identyfikatora, gdy ID zawiera nawiasy kwadratowe?
- 24. Visual Studio dołączyć tekst do końca wierszy za pomocą find/replace z wyrażeniem regularnym linii końcowej ($)
- 25. Zastąp zawartość pliku tekstowego wyrażeniem regularnym w powłoce administratora
- 26. wyrażeniem regularnym dopasowującym dowolnych liter lub cyfr lub Dash
- 27. JavaScript: jak serializować element DOM jako ciąg do późniejszego użycia?
- 28. Znajdź zgodny predykat i użyj iterable.tryFind zwróć element z listy w java
- 29. JavaScript DOM usuń element
- 30. Jak usunąć element dom?
Czy masz kod, który nie działa, czy jest to pytanie "daj mi teh codez"? Co próbujesz? – CanSpice
Muszę znaleźć podejście, mogę zrobić kodowanie. Jeśli jego rozwiązanie i kod są już dostępne - jeszcze lepiej. –
Wygląda na to, że jQuery może to zrobić za pomocą selektora: contains(). może jego logika może zostać ponownie zdefiniowana, aby użyć wyszukiwania regexp zamiast wyszukiwania podłańcuchowego. –