Regulärer Ausdruck für Emoticons
siggi
- javascript
0 NeoGriever0 NeoGriever0 siggi
0 ms-880 siggi
Hallo Community,
ich habe Schwierigkeiten, reguläre Ausdrücke zu verstehen, da ich mich mit dem Thema noch gar nicht befasst habe. Jetzt habe ich mir ein paar Anleitungen angesehen, aber es ist irgendwie zu viel auf einmal bzw. ich habe zu viele Fragen.
Jedenfalls möchte ich auch gleich zu meiner Frage kommen:
Ich habe einen Chat, basierend auf Ajax, PHP und JavaScript allgemein, programmiert, der auch funktioniert (Jaja, ich hätte es mit Java-Applets machen sollen, ich weiß :D). Jetzt möchte ich gerne mit Hilfe von regulären Ausdrücken gewisse Zeichenketten durch Emoticons ersetzen.
Das hat auch gut geklappt. Hier ein Beispiel:
Content = Content.replace(/:\)/g, "<img src='smileys/happy.png' alt=':)' title=':)' />");
Das Problem ist nur, dass die Smileys auch in Links angezeigt werden, also habe ich davor und dahinter geprüft, ob da ein Leerzeichen steht, doch das will ich nicht. Wenn jetzt ein Smiley alleine steht, wird er nicht angezeigt, weil davor und dahinter kein Leerzeichen ist.
Wie kann ich also meinen Regulären Ausdruck so formulieren, dass er mir das Emoticon anzeigt, wenn ...
Und so weiter. Außer ihr habt bessere Vorschläge, wie ich es machen sollte. Den Regulären Ausdruck dazu könnte ich trotzdem gut gebrauchen, selbstverständlich mit einer Erklärung zu jedem Ausdruck.
Ich wäre sehr dankbar für eure Mühen.
LG Siggi
Vielleicht hilft dir folgender Regulärer Ausdruck weiter:
" :[)(][-.\*,\DEC]{1,2} "
Getestet mit:
http://gskinner.com/RegExr/
Edit: Das Problem mit den einzeln stehenden Smileys kannst du prüfen indem du prüfst, ob EOF bzw BOF (End of File / Begin of File) ist oder \r bzw. \n davor/dahinter ist.
:)
Edit: Das Problem mit den einzeln stehenden Smileys kannst du prüfen indem du prüfst, ob EOF bzw BOF (End of File / Begin of File) ist oder \r bzw. \n davor/dahinter ist.
:)
Und wie sieht das dann in dem folgenden regulären Ausdruck aus?
" \r/:\)\r/g "
Jede abgesendete Nachricht ist ein DIV, in dem die Nachricht steht. Also müsste ich JavaScript quasi das DIV überprüfen lassen?
" /\r:\)\r/g "
meinte ich natürlich...
Vielleicht hilft dir folgender Regulärer Ausdruck weiter:
" :[)(][-.\*,\DEC]{1,2} "
Getestet mit:
http://gskinner.com/RegExr/
Das ist ja schön und gut, aber wie schon in meinem ersten Beitrag erwähnt, wäre es für mich sehr hilfreich, wenn Du mir erklären könntest, was du da genau gemacht hast, Zeichen für Zeichen und in der Gesamtheit. Ich könnte natürlich nachsehen, was das bedeutet, aber dann wäre ich wieder zu verwirrt und müsste letztendlich doch nochmal nachfragen, also mach ich das am besten jetzt :D, sorry.
Getestet habe ich das jetzt ebenfalls auf der von dir angegebenen Seite, aber er erkennt blöderweise die Smileys in den Links, was er eben nicht tun soll! Oder versteh ich das falsch?
Hi,
könntest du paar Beispiele anführen was zB gematched werden soll und was konkret nicht. (Weil du meintest, anfangs vom div, in URL etc)
Wäre super,
lg
Hi,
könntest du paar Beispiele anführen was zB gematched werden soll und was konkret nicht. (Weil du meintest, anfangs vom div, in URL etc)
Wäre super,
lg
Was gematched werden soll:
1.
Dies ist ein Test-Text mit mehreren :) :/ :( =) smileys. (Nur Smileys anzeigen, die davor und dahinter Abstand haben).
2.
:) hier steht mein Smiley am Anfang. (Hat zwar Abstand rechts vom Smiley, aber am Anfang des Textes nicht, widerspricht also dem ersten Beispiel. Soll aber angezeigt werden. Gilt auch für Ende des Textes).
Was nicht als Smiley dargestellt werden soll:
1.
http://www.beispiel:).de/ (Hier existieren zwei Smileys, die nicht angezeigt werden dürfen).
2.
Das ist ein Test-Text mit mit:):):):Daneinandergereihten Smileys. (Sollen NICHT angezeigt werden).