Strict Standards: Declaration of action_plugin_dlcount::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /home/www/wiki/lib/plugins/dlcount/action.php on line 14

Strict Standards: Declaration of action_plugin_indexmenu::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /home/www/wiki/lib/plugins/indexmenu/action.php on line 169

Strict Standards: Declaration of action_plugin_ipban::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /home/www/wiki/lib/plugins/ipban/action.php on line 67

Strict Standards: Declaration of action_plugin_loglog::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /home/www/wiki/lib/plugins/loglog/action.php on line 82

Strict Standards: Declaration of action_plugin_navi::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /home/www/wiki/lib/plugins/navi/action.php on line 46

Strict Standards: Declaration of action_plugin_uparrow::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /home/www/wiki/lib/plugins/uparrow/action.php on line 69

Strict Standards: Declaration of action_plugin_userspagecreate::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /home/www/wiki/lib/plugins/userspagecreate/action.php on line 97

Strict Standards: Declaration of cache_instructions::retrieveCache() should be compatible with cache::retrieveCache($clean = true) in /home/www/wiki/inc/cache.php on line 289

Warning: Cannot modify header information - headers already sent by (output started at /home/www/wiki/lib/plugins/dlcount/action.php:14) in /home/www/wiki/inc/auth.php on line 312

Strict Standards: Only variables should be passed by reference in /home/www/wiki/doku.php on line 71

Warning: Cannot modify header information - headers already sent by (output started at /home/www/wiki/lib/plugins/dlcount/action.php:14) in /home/www/wiki/inc/actions.php on line 154
REGEX [phpwcms-HowTo:wiki]

Strict Standards: Declaration of syntax_plugin_code::render() should be compatible with DokuWiki_Syntax_Plugin::render($format, &$renderer, $data) in /home/www/wiki/lib/plugins/code/syntax.php on line 41

Strict Standards: Declaration of syntax_plugin_tip::render() should be compatible with DokuWiki_Syntax_Plugin::render($format, &$renderer, $data) in /home/www/wiki/lib/plugins/tip/syntax.php on line 38

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ässt 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üfen:

Angelehnt an Die Funktion preg_match_all [infos24 GmbH]

$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.txt · Last modified: 2012/02/03 09:55 by Knut Heermann (flip-flop)
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

Strict Standards: Only variables should be passed by reference in /home/www/wiki/doku.php on line 79