[ABAP] RegEx – String auf gültige Email-Adresse prüfen

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