• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Regex w javascript - pomocy

Object Storage Arubacloud
0 głosów
169 wizyt
pytanie zadane 22 października 2018 w JavaScript przez alcatel99 Nowicjusz (120 p.)

Potrzebuje pomocy odnośnie podmiany kodu strony.
Mianowicie chce pobrać zawartość znacznika <p> gdzie jest tekst i przy użyciu regex wstawić znacznik np. <nobr>

Przykładowo mamy tekst:
"Dwa pokoje 4-osobowe, mają wspólny taras z innymi 2-osobowymi pokojami. Taras z bezpośrednim wyjściem na zewnątrz, z ogrodzonym ogródkiem. Wyposażone są w 3 tapczany i dużą rozkładaną kanapę narożną. Możliwość zakwaterowania 5 osób przy wspólnym spaniu na kanapie. Pełny węzeł sanitarny: prysznic, toaleta, umywalka. Dostępne 2 z pięciu."

i chcę sprawić zeby pojedyńcze znaki nie były przełamywane

var p = document.getElementsByTagName("P");

var regex = /(\s)(\w{1}\s\w{2,})(\s)/gm;

console.log(p.replace(regex, ' <nobr>$2</nobr> '));

czyli tekst powinien wyglądać po zmianie tak:

"Dwa pokoje 4-osobowe, mają wspólny taras <nobr>z innymi</nobr> 2-osobowymi pokojami. Taras z bezpośrednim wyjściem na zewnątrz, <nobr>z ogrodzonym</nobr> ogródkiem. Wyposażone są w <nobr>3 tapczany</nobr> <nobr>i dużą</nobr> rozkładaną kanapę narożną. Możliwość zakwaterowania <nobr>5 osób</nobr> przy wspólnym spaniu na kanapie. Pełny węzeł sanitarny: prysznic, toaleta, umywalka. Dostępne <nobr>2 z pięciu</nobr>."

Niby banalne ale jednak nie mogę ogarnąć jak to zmusić do działania - pomocy.

komentarz 22 października 2018 przez ScriptyChris Mędrzec (190,190 p.)

Nie wystarczy Ci w CSS użyć word-break?

komentarz 23 października 2018 przez alcatel99 Nowicjusz (120 p.)
edycja 23 października 2018 przez alcatel99

Nie chodzi czy użyje word-break czy nobr - problem jest, żeby tekst automatycznie miał dodane znaczniki które spowodują, że na końcu lini nie zostanie pojedyńcza litera np. z, a, i.

http://pokazywarka.pl/b50nuj/

Prawie sobie poradziłem...

O coś takiego mi chodziło - teraz tylko regex trzeba poprawić bo dla stringa np. Kasia i Tomek działa poprawnie ale już dla Kasia i 2 Tomków weźmie tylko "2 Tomków" obsłuży a powinno wstaić znacznik na "i 2 Tomków"

<script>
    $('div, p, span, li').each(function () {  // use your selector of choice here
        var html = $(this).html();
        $(this).html(html.replace(/\s(\w{1}\s[\s.a-zA-ZąćęłńóśźżĄĘŁŃÓŚŹŻ]{2,})/gmu, " <nobr>$1</nobr>"));
    });    
</script>    

 

1 odpowiedź

0 głosów
odpowiedź 28 października 2018 przez X3h Dyskutant (9,540 p.)
Napisałem prostą zmianę tagu. https://codepen.io/Elek/pen/OBqyNq Zamienia tag na inny z listy nodów. Nie uwzględnia eventów takich jak onclick.

Podobne pytania

+2 głosów
3 odpowiedzi 340 wizyt
0 głosów
0 odpowiedzi 542 wizyt
pytanie zadane 29 maja 2020 w JavaScript przez poldeeek Mądrala (5,980 p.)
+2 głosów
2 odpowiedzi 174 wizyt
pytanie zadane 25 marca 2018 w JavaScript przez ajzyn Użytkownik (510 p.)

92,556 zapytań

141,403 odpowiedzi

319,560 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...