2009-03-24 4 views
4

Wenn ich das .Net RegularExpressionsValidator-Steuerelement verwende, stimmt der Validation-Ausdruck mit EXACT-Text überein. Wenn ich das sage, meine ich, für die Zeichenfolge, die ich gebe, um sie zu validieren, wenn sie überhaupt von dem Regex-Muster abweicht, validiert die Zeichenfolge nicht..Net RegularExpressionValidator stimmt nicht mit der Regex-Klasse überein

zB: (([0-1] [0-9]) | ([2] [0-3])): ([0-5] [0-9]) falls in der RegularExpressionsValidator-Steuerelement wird nur Zeichenfolgen wie -> 12:00, 07:15, 23:59 entsprechen aber nicht Strings 12: 00foo, bar23: 00, foobar.

Nun, wenn ich die Regex-Klasse im Code hinter und geben Sie den gleichen regulären Ausdruck es entspricht alle Zeichenfolgen, die eine Übereinstimmung und andere Zeichen enthalten.

Beispiel: (Unter Verwendung des gleichen regulären Ausdrucks wie im letzten Beispiel) Wenn ich die Regex - Klasse verwende, stimmen die folgenden Zeichenfolgen überein -> 12:00, 07:15, 23:59 UND 12: 00foo (enthält a Match), bar23: 00 (enthält eine Übereinstimmung).

Gibt es einen Grund, dass sie anders behandelt werden und gibt es eine Möglichkeit, das gleiche Verhalten wie das Steuerelement RegularExpressionValidator nachzuahmen?

Vielen Dank im Voraus!

Antwort

7

Was passiert ist, dass der Regex-Validator Ihre Zeichenfolge als Textzeile verarbeitet. Es fügt implizit die^und $ matchers am Anfang der Regex ein.

Es ist wie wenn man sagt:

^(([0-1][0-9])|([2][0-3])):([0-5][0-9])$ 

Der obige Ausdruck in den Regex Class das gleiche Ergebnis wie die Validierungssteuer erzeugen.

0

Eine einfache, universelle Art und Weise Ihren regulären Ausdruck zu bekommen genau einen String passen ist es zu zwingen, vom Anfang bis zum Ende der Zeichenfolge wie folgt anzupassen:

^pattern$ 
Verwandte Themen