MudGuard: Erster Prototyp des PHP-Forums

Beitrag lesen

Hi,

preg_match('/[a-zA-Z0-9.!#$%&’*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*/', $value)

ist das der Regex, der für die Tabelle unten verwendet wurde?

|Adresse|Filter|RegEx|Firefox| |mail@example.org|✔|✔|✔| |mäil@fußhölle.de|✗|✔|✗| |test@موقع.وزارة-الاتصالات.مصر|✗|✗|✔| |bla@Доменні.ru|✗|✗|✔|

Das ✔ steht, wie die erste Zeile andeutet, wohl für "als korrekt erkannt". Das paßt aber nicht zur zweiten Zeile - der Regex erlaubt weder vor noch nach dem @ Umlaute, dennoch soll mäil@fußhölle als korrekt erkannt worden sein?

Das paßt nicht zusammen.

Ah - doch - wegen der fehlenden Anker matcht das il@fu ...

(Ich bin java.util.regex ... gewöhnt - da gibt es match und find - match setzt diese Anker implizit, es gibt nur true zurück, wenn der gesamte String gefunden wird - da dachte ich im ersten Moment, daß auch preg_match den gesamten String prüft ...)

Mit den Ankern ^ am Anfang und $ am Ende käme auch in der zweiten Zeile beim Regex das ✗ hin ...

cu,
Andreas a/k/a MudGuard