This is an old revision of the document!


REGEX

http://www.php.net/manual/de/function.preg-replace.php#89364

REGEX

Because i search a lot 4 this:
 
The following should be escaped if you are trying to match that character
 
\ ^ . $ | ( ) [ ]
* + ? { } ,
 
Special Character Definitions
\ Quote the next metacharacter
^ Match the beginning of the line
. Match any character (except newline)
$ Match the end of the line (or before newline at the end)
| Alternation
() Grouping
[] Character class
* Match 0 or more times
+ Match 1 or more times
? Match 1 or 0 times
{n} Match exactly n times
{n,} Match at least n times
{n,m} Match at least n but not more than m times
More Special Character Stuff
\t tab (HT, TAB)
\n newline (LF, NL)
\r return (CR)
\f form feed (FF)
\a alarm (bell) (BEL)
\e escape (think troff) (ESC)
\033 octal char (think of a PDP-11)
\x1B hex char
\c[ control char
\l lowercase next char (think vi)
\u uppercase next char (think vi)
\L lowercase till \E (think vi)
\U uppercase till \E (think vi)
\E end case modification (think vi)
\Q quote (disable) pattern metacharacters till \E
Even More Special Characters
\w Match a "word" character (alphanumeric plus "_")
\W Match a non-word character
\s Match a whitespace character
\S Match a non-whitespace character
\d Match a digit character
\D Match a non-digit character
\b Match a word boundary
\B Match a non-(word boundary)
\A Match only at beginning of string
\Z Match only at end of string, or before newline at the end
\z Match only at end of string
\G Match only where previous m//g left off (works only with /g)

From: http://www.php.net/manual/de/function.preg-replace.php#89364


[DE]

RegEx Online-Tester: regex online tester - regular expressions

RegEx: bueltge.de [by:ltge.de]
“Die Nutzung von Regular Expressions, reguläre Ausdrucke, sind nicht leicht verständlich und doch in der Entwicklung notwendig und nützlich. Mir persönlich liegen die abstraketen Formulierungen nicht sonderlich und so habe ich immer diverse Schnipsel der Regex gesammelt.” (Zitat: bueltge.de [by:ltge.de])

Tutorial Reguläre Ausrücke
“Hier gibts ein kleines Tutorial zu diesen esoterisch anmutenden aber unglaublich mächtigen Zeichenketten, die beim unbedarften Betrachter Assoziationen eines kleinen Kindes und dessen ersten Versuchen an der Tastatur auslösen.” (Zitat: http://www.danielfett.de / [by: Daniel Fett])

SELFHTML Forumsarchiv: Regex immer mal wieder
Sehr guter zielführender Dialog zu folgenden Themen:

  • Suchen eines Wortteils in einem String
  • Ausschluss eines String, wenn ein bestimmter Wortteil enthalten ist (Lookarounds).


Reguläre Ausdrücke Autor:Gerd Ewald
“Im Menübereich Regular Expressions sind drei Versionen eines Tutorials zu regulären Ausdrücken zu finden:


regular expression mit PHP [by:infos24 GmbH]
“Regular expressions sind die abstrakte Formulierung eines wie auch immer strukturierten Textes. … Alles was eine Struktur hat, lässt sich über regular expressions durchsuchen und verändern.” (Zitat: http://www.infos24.de/ / [by: infos24 GmbH Diplom Volkswirt, Magister Artium Andrés Ehmann])


PHP Regular Expression Schnipsel [bueltge.de [by:ltge.de]]
Verschiedene Prüfbeispiele sehr gut erklärt, z.B. E-Mail Adresse, Usernamen, Telefonnummer, IP Addresse, PLZ, Kreditkartenummer, Domain, Hervorheben eines Wortes im Text, Bilder finden, Wiederholende Wörter ersetzen, Wiederholende Punkte ersetzen, xHTML/XML Tag finden, …


Datumseingabe:

Regular Expression für ein Datum

Datum mit Schaltjahr YYYY-mm-dd:

-?\d*(?:(?:(?:(?:[02468][048]|[13579][26])(?:[02468][048]|[13579][26])|(?:[02468][^048]|[13579][^26])(?:0[48]|[2468][048]|[13579][26]))[-./]?02[-./]?(?:0[1-9]|[12]\d)|(?:(?:[02468][^048]|[13579][^26])00|\d\d(?:[02468][^048]|[13579][^26]))[-./]?02[-./]?(?:0[1-9]|1\d|2[0-8]))|\d{4}[-./]?(?:(?:0[13578]|1[02])[-./]?(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)[-./]?(?:0[1-9]|[12]\d|30)))
-?\d*(?:(?:(?:[02468][048]|[13579][26])(?:[02468][048]|[13579][26])|(?:[02468][1-35-79]|[13579][013-57-9])(?:0[48]|[2468][048]|[13579][26]))([-.\/]?)02\1 29|\d{4}([-.\/]?)(?:(?:0[13578]|1[02])\2(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)\2(?:0[1-9]|[12]\d|30)|02\2(?:0[1-9]|1\d|2[0-8])))

kommentiert

if($date=~/-?\d*                            # für die Ewigkeit
  (?:
    (?:                                     # 29. feb. im schaltjahr
      (?:[02468][048]|[13579][26])           # jahrhundert durch 4 teilbar
      (?:[02468][048]|[13579][26])           # jahr durch 4 teilbar
      |
      (?:[02468][1-35-79]|[13579][013-57-9]) # jahrhundert nicht durch 4 teilbar
      (?:0[48]|[2468][048]|[13579][26])      # jahr durch 4 teilbar ausser volle jahrhunderte
    )
    ([-.\/]?)                                # separator \1
    02\1 29                                  # 29. feb.; wiederholung des separators
    |
    \d{4}                                   # beliebiges jahr
    ([-.\/]?)                                # separator \2
    (?:
      (?:0[13578]|1[02])                     # langer monat
      \2                                     # wiederholung \2
      (?:0[1-9]|[12]\d|3[01])                # 01 bis 31
      |
      (?:0[469]|11)                          # kurzer monat
      \2                                     # wiederholung \2
      (?:0[1-9]|[12]\d|30)                   # 01 bis 30
      |
      02                                     # februar
      \2                                     # wiederholung \2
      (?:0[1-9]|1\d|2[0-8])                  # 01 bis 28
    )
  )/x){
  print 'valid'."\n";
}else{
  print 'not valid!';
}


Läst nur Jahre 1583 bis 9999 zu:

^(?:(?:[2468][048]|16|[3579][26])(?:[02468][048]|[13579][26])|(?:[2468][1-35-79]|1[789]|[3579][013-57-9])(?:0[48]|[2468][048]|[13579][26])|15(?:88|9[26]))([-.\/]?)02\1 29|(?:[2-9]\d\d\d|1[6-9]\d\d|159\d|158[3-9])([-.\/]?)(?:(?:0[13578]|1[02])\2(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)\2(?:0[1-9]|[12]\d|30)|02\2(?:0[1-9]|1\d|2[0-8]))$

kommentiert

if($date=~/# laesst nur jahre 1583 bis 9999 zu
  (?:                                          # 29. feb. im schaltjahr
    (?:[2468][048]|16|[3579][26])               # jahrhundert durch 4 teilbar
    (?:[02468][048]|[13579][26])                # jahr durch 4 teilbar
    |
    (?:[2468][1-35-79]|1[789]|[3579][013-57-9]) # jahrhundert nicht durch 4 teilbar
    (?:0[48]|[2468][048]|[13579][26])           # jahr durch 4 teilbar ausser volle jahrhunderte
    |
    15(?:88|9[26])                              # beachtung der einfuehrung des gregor. kalenders
  )
  ([-.\/]?)                                     # separator \1
  02\1 29                                       # 29. feb.; wiederholung des separators \1
  |
  (?:[2-9]\d\d\d|1[6-9]\d\d|159\d|158[3-9])    # beliebiges jahr, ab 1583
  ([-.\/]?)                                     # separator \2
  (?:
    (?:0[13578]|1[02])                          # langer monat
    \2                                          # wiederholung \2
    (?:0[1-9]|[12]\d|3[01])                     # 01 bis 31
    |
    (?:0[469]|11)                               # kurzer monat
    \2                                          # wiederholung \2
    (?:0[1-9]|[12]\d|30)                        # 01 bis 30
    |
    02                                          # februar
    \2                                          # wiederholung \2
    (?:0[1-9]|1\d|2[0-8])                       # 01 bis 28
  )/x){
  print 'valid'."\n";
}else{
  print 'not valid!';
}


E-Mail prüpfen:

Angelehnt an Die Funktion preg_match_all [infos24 GmbH]

E-Mail check

$email    = test@example.com
$email_ok = preg_match("!^\w[\w|\.|\-]+@\w[\w|\.|\-]+\.[a-zA-Z]{2,4}$!",$email);


[EN]

Regular Expressions Cheat Sheet (V2)
“The Regular Expressions cheat sheet is a one-page reference sheet. It is a guide to patterns in regular expressions, and is not specific to any single language.” (Quotation: Added Bytes)

Introduction to PHP Regex

links/php/regular-expression.1328257830.txt.gz · Last modified: 2018/06/03 18:06 (external edit)
www.planmatrix.de www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0