Autor | Zpráva | ||
---|---|---|---|
Kryvosa Profil * |
#1 · Zasláno: 28. 9. 2017, 22:30:12
Pěkný den všem,
na jednom osobním online chatu který vytvářím se snažím přidat nahrazení smajlíka (":)", popř. ":-)") za jeho obrázkový ekvivalent: message=message.replace(/( |^):-?\)( |$)/g,"$1<img class='icon' src='./img/emo/3.png'>$2"); Nevíte někdo jak tento regulár upravit/přepsat tak, aby fungoval i na takovéto vícenásobné případy, a to bez odstranění podmínky že před i za smajlíkem musí být mezera? (Nebo začátek/konec řádku?) |
||
Keeehi Profil |
#2 · Zasláno: 28. 9. 2017, 23:07:48
(?<= |^):-?\)(?= |$) Nebo můžeš použít to tvoje řešení a jen to nahrazení pustit dvakrát po sobě. No nicméně, proč tam vyžaduješ mezeru? V Ahoj :). by to bylo také dobré naradit, ne?
|
||
Radek9 Profil |
Kryvosa:
JS regexy podporují tzv. lookaheady. Je to část řetězce, u které se jen ověřuje, že následuje (příp. nenásleduje u negativního lookaheadu), ale dál už se s ní nepracuje: (Více zde.) message=message.replace(/( |^):-?\)(?= |$)/g,"$1<img class='icon' src='./img/emo/3.png'>"); // smazáno $2 Taktéž bych doporučil místo mezery používat \s , neboť tak odchytíš všechny bílé znaky:
message=message.replace(/(\s|^):-?\)(?=\s|$)/g,"$1<img class='icon' src='./img/emo/3.png'>"); No a jako třešničku na dortu můžeš vychytat i intepunkci za smajlíkem: message=message.replace(/(\s|^):-?\)(?=\s|\.|\?|!|:|$)/g,"$1<img class='icon' src='./img/emo/3.png'>"); |
||
Časová prodleva: 8 let
|
0