0
votes

I want to check if a text has sensible information (for example e-mail adresses and numbers because a number can be a telephone number or customer id etc.).

I have a working pattern to detect e-mail:

/(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})/img

A working pattern to detect urls:

/(www|http:|https:)+[^\s]+[\w]/img

This is my current pattern for numbers:

/(| +|\+)(\d+){3,20}/img

But I want only detect numbers in some cases. They should not match when they are used in an url or when they are used in @mention of an username.

This is the text I test the patterns against:

@HAMAPA @Waage1965

www.telekomhilft.telekom.de/t5/Fragen-zur-Community/Community-Update-01-2018/m-p/3055244#M28054 der Ort der Schaltfläche ist fehlerhaft (gehört in das Register) bzw. das Register ist fehlerhaft, weil diese Schaltfläche fehlt, das ist nicht beabsichtigt, so wie es [email protected] Denn215685553555 bezüglich PN-Register gibt es noch ein weiteres Problem, das ich aber in einem anderen Beitrag gemeldet hatte. Und nur weil die "Neue Nachrichten"-Schaltfläche am falschen Ort ist, ist die dort überhaupt +490154555356 vorhanden, der Fehler des falschen Ortes gleicht somit derzeit ein Drittel eines anderen Fehlers aus. 0175 27557996

0175 12345678 001-541-754-3010 +490154555356 04435/1111 12334546546565

[email protected]

[email protected] Bitte folge dem 04435/1111 Link zu meiner Meldung, dort ist der Fehler beschrieben (inklusive zwei Bildern im Spoiler wie es gerade fälschlicherweise ist und wie es eigentlich sein sollte an der Stelle mit dem Register). Kannst ja mal selbst versuchen eine vorhandene PN zu öffnen (z. B. aus deinen versendenen PNs) und dann von dort auf eine PN der anderen Liste zu wechseln (z. B. auf eingegangene PNs). http://telekomhilft.telekom.de/t5/Fragen-zur-Community/Community-Update-01-2018/m-p/3055244#M28054 der Ort der Schaltfläche ist fehlerhaft (gehört in das Register) bzw. das Register ist fehlerhaft, weil diese Schaltfläche fehlt, das ist nicht beabsichtigt, so wie es [email protected] Denn bezüglich PN-Register gibt es noch ein weiteres Problem, das ich aber in einem anderen Beitrag gemeldet hatte. Und nur weil die "Neue Nachrichten"-Schaltfläche am falschen Ort ist, ist die dort überhaupt vorhanden, der Fehler des falschen Ortes gleicht somit derzeit ein Drittel eines anderen Fehlers aus. https://telekomhilft.telekom.de/t5/Fragen-zur-Community/Community-Update-01-2018/m-p/3055244#M28054

In that example: I don't want that the numbers in the urls are matched and I don't want the number in the @mention of the username Waage1965 is matched.

And is it possible to combine the pattern in one pattern? What I want to achieve is that the user gets a warning if his text contains an e-mail adress or possibly a telephone number or customer id. But the warning should not appear if the numbers are just numbers in an url.

1

1 Answers

1
votes

This is a pretty nasty regex, but it works

/(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})|\+?[\d-]{9,18}/img

I pretty much added the OR (|) operator between your expressions, and modified the telephone's regex: \+?[\d-]{9,18}. You didn't define what you consider a phone number, so you can just tweak the numbers in the curly brackets.

A full test is here.