Variante 1 (cl_abap_matcher)
* Übersicht TLD: https://data.iana.org/TLD/tlds-alpha-by-domain.txt
* Format Email-Adressen: https://de.wikipedia.org/wiki/E-Mail-Adresse
* einfaches Beispiel: ^[\w\.=-]+@[\w\.-]+\.[\w]{2,18}$
* komplexes Beispiel: ^[a-zA-Z0-9][A-Za-z0-9\.!#$%&'*+\-\/=?^_`{|}~]{0,28}[a-zA-Z0-9]@[äöü\w\.\-]+\.[\w]{2,18}$
DATA(lv_email) = |my.email@email.com|.
DATA(lv_regex) = |^[a-zA-Z0-9][A-Za-z0-9.!#$%&'*+-/=?^_`\{\|\}~]\{0,28\}[a-zA-Z0-9]@[äöü\\w.-]+.[\\w]\{2,18\}$|.
IF abap_true = cl_abap_matcher=>create_pcre( pattern = lv_regex
text = lv_email
ignore_case = abap_true )->match( ).
WRITE: / 'Gültige Email'.
ELSE.
WRITE: / 'Ungültige Email'.
ENDIF.
Variante 2 (xco_cp, xco_cp_regular_expression)
DATA(lv_email) = |my.email@email.com|.
DATA(lv_regex) = |^[a-zA-Z0-9][A-Za-z0-9.!#$%&'*+-/=?^_`\{\|\}~]\{0,28\}[a-zA-Z0-9]@[äöü\\w.-]+.[\\w]\{2,18\}$|.
* Regex nach PCRE (Perl Compatible Regular Expressions)
DATA(lv_match) = xco_cp=>string( lv_email )->matches( iv_regular_expression = lv_regex
io_engine = xco_cp_regular_expression=>engine->pcre( iv_ignore_case = abap_true
iv_enable_multiline = abap_true ) ).
IF abap_true = lv_match.
WRITE: / 'Gültige Email'.
ELSE.
WRITE: / 'Ungültige Email'.
ENDIF.
Links