phpbar.de logo

Mailinglisten-Archive

[php] Mein Beitrag zur Woche der 'Regulaere Ausdruecke'

[php] Mein Beitrag zur Woche der 'Regulaere Ausdruecke'

Alex Emken php at emken.com
Fre Dez 3 14:03:58 CET 2004


Hallo Michael.

Michael.Glaser at spb.de wrote:
> Ich bekomme Infromationen von Konponenten die wie folgt heissen: AxxBCyy.
> Dabei ist xx ein Element der Zahlen 61,63,65,71,73,81,84. Fuer jedes xx
> kann unter yy folgender Wert stehen: 25,35,45,55. D.h. ich habe Komponenten
> der Art A61BC25, A61BC35, A61BC45, A61BC55, A63BC25, A63BC45 .... ,
> A84BC45, A64BC55. (Fuer xx koennen nur die angegebenen Werte vorkommen, yy
> hingegen gilt (leider) diese Beschraenkung nicht).
> 
> Nachdem dieses Problem einfach nach einem RegExp schreit, wollte ich es
> damit auch loesen. Meine Vorschlaege dazu waren.:
>      - /A..BC[25|35|45|55]/
>      - /A..BC["25"|"35"|"45"|"55"]/
>      - /A\d\dBC["25"|"35"|"45"|"55"]/
> 
> Weiss jemand von Euch einen Rat oder die richtige RegExp?

Ja, lass die eckigen Klammern weg und ersetzte sie durch runde. Eckige 
Klammern "makieren" eine Klasse von Zeichen.

/A(61|63|65|71|73|81|84)BC(25|35|45|55)/


<code>
  $arr = array (/* RICHTIG */
                'A61BC25', 'A61BC35', 'A61BC45',
                'A61BC55', 'A63BC25',
                /* FALSCH */
                'AXYBCD', 'A100BC222');

  foreach ($arr as $value) {
      if (preg_match("/A(61|63|65|71|73|81|84)BC(25|35|45|55)/",
                      $value)) {
          echo $value.' ist gueltig<br/>';
      }
      else {
          echo $value.' ist nicht gueltig<br/>';
      }
  }
</code>

Viele Grüße,
Alex

php::bar PHP Wiki   -   Listenarchive