Mein regulärer Ausdruck macht nicht was ich will! – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self Mein regulärer Ausdruck macht nicht was ich will! Mon, 19 Sep 11 17:53:18 Z https://forum.selfhtml.org/self/2011/sep/19/mein-regulaerer-ausdruck-macht-nicht-was-ich-will/1525760#m1525760 https://forum.selfhtml.org/self/2011/sep/19/mein-regulaerer-ausdruck-macht-nicht-was-ich-will/1525760#m1525760 <p>Hi,<br> das php-script</p> <pre><code class="block language-php"> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token variable">$wert</span> <span class="token operator">=</span> <span class="token string double-quoted-string">"0123457-345455444"</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token function">preg_match</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'/^0[0-9]{2,4}[-]?[0-9]{3,}/'</span><span class="token punctuation">,</span> <span class="token variable">$wert</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"Fehler"</span><span class="token punctuation">;</span> <span class="token keyword">else</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"OK"</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span> </code></pre> <p>sollte nach meiner Meinung folgendes erlauben:<br> 0123456789<br> 012-3456789<br> 0123-456789<br> 01234-56789<br> aber nicht:<br> 012345-6789<br> und erst recht nicht<br> 0123456-789<br> Es akzeptiert aber auch den obigen Wert 0123457-345455444<br> Wo liegt mein Denkfehler?<br> Gruß<br> Flori</p> Mein regulärer Ausdruck macht nicht was ich will! Mon, 19 Sep 11 18:08:54 Z https://forum.selfhtml.org/self/2011/sep/19/mein-regulaerer-ausdruck-macht-nicht-was-ich-will/1525764#m1525764 https://forum.selfhtml.org/self/2011/sep/19/mein-regulaerer-ausdruck-macht-nicht-was-ich-will/1525764#m1525764 <p>Hi,</p> <blockquote> <p><code class="language-php"> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token function">preg_match</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'/^0[0-9]{2,4}[-]?[0-9]{3,}/'</span><span class="token punctuation">,</span> <span class="token variable">$wert</span><span class="token punctuation">)</span><span class="token punctuation">)</span></code></p> </blockquote> <blockquote> <p>sollte nach meiner Meinung folgendes erlauben: [...]<br> aber nicht:<br> 012345-6789</p> </blockquote> <p>Beginnt mit 2 Ziffern, gefolgt von keinem -, gefolgt von 3 Ziffern – passt.</p> <blockquote> <p>und erst recht nicht<br> 0123456-789</p> </blockquote> <p>Beginnt mit 2 Ziffern, gefolgt von keinem -, gefolgt von 3 Ziffern – passt.</p> <blockquote> <p>Es akzeptiert aber auch den obigen Wert 0123457-345455444<br> Wo liegt mein Denkfehler?</p> </blockquote> <p>Keine Ahnung – du hast und ja nicht beschrieben, was du dir bei dem Ausdruck gedacht hast.</p> <p>MfG ChrisB</p> <div class="signature">-- <br> RGB is totally confusing - I mean, at least #C0FFEE should be brown, right? </div> Mein regulärer Ausdruck macht nicht was ich will! Mon, 19 Sep 11 18:17:13 Z https://forum.selfhtml.org/self/2011/sep/19/mein-regulaerer-ausdruck-macht-nicht-was-ich-will/1525763#m1525763 https://forum.selfhtml.org/self/2011/sep/19/mein-regulaerer-ausdruck-macht-nicht-was-ich-will/1525763#m1525763 <p>Hi,</p> <blockquote> <pre><code class="block language-php"></code></pre> </blockquote> <blockquote> <p><?php<br>    $wert = "0123457-345455444";<br>    if (!preg_match('/^0[0-9]{2,4}[-]?[0-9]{3,}/', $wert))<br>      echo "Fehler";<br>    else<br>      echo "OK";<br> ?></p> </blockquote> <pre><code class="block"> > sollte nach meiner Meinung folgendes erlauben: > [...] > aber nicht: > 012345-6789 > Wo liegt mein Denkfehler? Du hast den Regex nur vorne veranktert, nicht hinten. Bis die Tage, Matti -- [Webapplikationen in C++ entwickeln](http://tntnet.org/) </code></pre> Mein regulärer Ausdruck macht nicht was ich will! Mon, 19 Sep 11 18:38:04 Z https://forum.selfhtml.org/self/2011/sep/19/mein-regulaerer-ausdruck-macht-nicht-was-ich-will/1525762#m1525762 https://forum.selfhtml.org/self/2011/sep/19/mein-regulaerer-ausdruck-macht-nicht-was-ich-will/1525762#m1525762 <p>Hallo,</p> <blockquote> <p>if (!preg_match('/^0[0-9]{2,4}[-]?[0-9]{3,}/', $wert))<br> Es akzeptiert aber auch den obigen Wert 0123457-345455444</p> </blockquote> <p>warum auch nicht?<br> Der Wert beginnt mit der Ziffer 0,<br> dann folgen zwei bis vier Ziffern (nämlich 12 oder 123),<br> dann folgt ein optionales Minuszeichen, das in diesem Fall nicht da ist,<br> und dann weitere drei oder mehr Ziffern (nämlich 3457 oder 457).</p> <p>Passt. :-)</p> <blockquote> <p>Wo liegt mein Denkfehler?</p> </blockquote> <p>Kann ich nicht genau sagen, da ich die Anforderung nicht kenne.</p> <p>Ciao,<br>  Martin</p> <div class="signature">-- <br> Ordnung schaffen heißt, das Eigelb vom Dotter zu trennen.<br> Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:( </div> Mein regulärer Ausdruck macht nicht was ich will! Mon, 19 Sep 11 18:45:23 Z https://forum.selfhtml.org/self/2011/sep/19/mein-regulaerer-ausdruck-macht-nicht-was-ich-will/1525761#m1525761 https://forum.selfhtml.org/self/2011/sep/19/mein-regulaerer-ausdruck-macht-nicht-was-ich-will/1525761#m1525761 <p>Hi,</p> <blockquote> <p>$wert = "0123457-345455444";<br>    if (!preg_match('/^0[0-9]{2,4}[-]?[0-9]{3,}/', $wert))<br>      echo "Fehler";<br>    else<br>      echo "OK";<br> ?><br> [/code]<br> sollte nach meiner Meinung folgendes erlauben:<br> 0123456789<br> 012-3456789<br> 0123-456789<br> 01234-56789<br> aber nicht:<br> 012345-6789<br> und erst recht nicht<br> 0123456-789<br> Es akzeptiert aber auch den obigen Wert 0123457-345455444</p> </blockquote> <p>Das liegt daran, daß die Regex-Engine sich nicht nach Deiner Meinung richtet, sondern nach dem gegebenen Regex - und der erlaubt nunmal die gegebenen Werte - wie, das wurde ja bereits gesagt.</p> <blockquote> <p>Wo liegt mein Denkfehler?</p> </blockquote> <p>Am Ende. ;-)<br> Am fehlenden Geld ($).</p> <p>Wenn der Ausdruck das machen soll, was ich vermute, ist er aber auch inhaltlich falsch - es gibt auch Telephon-Vorwahlen in Deutschland mit mehr als 4 Ziffern nach der 0 (z.B. Abberode 034779)</p> <p>cu,<br> Andreas</p> <div class="signature">-- <br> <a href="http://MudGuard.de/" rel="nofollow noopener noreferrer">Warum nennt sich Andreas hier MudGuard?</a><br> <a href="http://ostereier.andreas-waechter.de/" rel="nofollow noopener noreferrer">O o ostern ...</a><br> Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.<br> </div>