Dies ist die beste Lösung, die ich bisher gefunden habe, um mehrere Vorkommnisse eines Twitter-Benutzernamens zu ersetzen.
Der Regex, der das gewünschte Ergebnis liefert, lautet /(^|[^@\w])@(\w{1,15})\b/
. Ich fange das ein, was hinter dem @-Zeichen steht, damit ich den Benutzernamen korrekt ersetzen kann. Und ich verwende die globalen Match-Flagge (g), damit alle Vorkommnisse ersetzt werden. asenovm Antwort ist einfach, funktioniert aber in den meisten Benutzereingabe-Kontexten nicht, wie techexpert in seinem Kommentar erklärt.
var output,
text = "@RayFranco antwortet auf @AnPel, dies ist ein echter '@username83' aber dies ist eine@email.com, und das ist ein @probablyfaketwitterusername",
regex = /(^|[^@\w])@(\w{1,15})\b/g,
replace = '$1@$2';
output = text.replace( regex, replace );
console.log ( output );
Dies liefert mir das Ergebnis, das ich erwartet habe (getestet mit node v0.9.1):
@RayFranco antwortet auf @AnPel, dies ist ein echter '@username83' aber dies ist eine@email.com, und das ist ein @probablyfaketwitterusername
Dies basiert auf den Twitter "Spezifikationen" für Benutzernamen:
Ihr Benutzername darf nicht länger als 15 Zeichen sein. Ihr richtiger Name kann länger sein (20 Zeichen), aber Benutzernamen werden kürzer gehalten, um die Benutzerfreundlichkeit zu gewährleisten. Ein Benutzername kann nur alphanumerische Zeichen (Buchstaben A-Z, Zahlen 0-9) enthalten, mit Ausnahme von Unterstrichen, wie oben erwähnt. Überprüfen Sie, ob Ihr gewünschter Benutzername keine Symbole, Bindestriche oder Leerzeichen enthält.
Hoffe, das hilft.