Avatar billede badal Nybegynder
21. december 2011 - 14:27 Der er 8 kommentarer og
1 løsning

C# / regex problem

jeg har en tekst fejl hvor brugeren kan skrive en dato. Jeg vil gerne have at hvis brugeren indtaster 2001-12-24, så skal systemet  give en fejl. Denne dato kan ikke vælges.

jeg har denne regex: (?=^\d{4}\-\d{2}\-\d{2}$)(?!2011\-12\-24|2011\-12\-25)

som virker når jeg tester den her: http://www.regular-expressions.info/javascriptexample.html

men når jeg indsætter den i .NET så vil den slet ikke validere:

<asp:ValidationSummary ID="ValidationSummary1" EnableClientScript="true" runat="server" />
        <asp:RegularExpressionValidator ValidationExpression="(?=^\d{4}\-\d{2}\-\d{2}$)(?!2011\-12\-24|2011\-12\-25)" 
            ControlToValidate="txtTo" ID="RegularExpressionValidator1" runat="server" Text="*"
            ErrorMessage="RegularExpressionValidator1"></asp:RegularExpressionValidator>
        To<asp:TextBox ID="txtTo" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="Button" />

Skal syntaksen være anderledes i .NET for regexen ?
Avatar billede Syska Mester
21. december 2011 - 14:33 #1
Har du testet den med Regex klassen?

.NET regex er lidt anderledens end regex fra andre sprog, så det er nok der den falder til jorden.

For et par uger siden var der en snak om Regex og en masse tools til at teste med ... kan ikke huske navnet, men en søgning herinde burde nok kunne finde den.
Avatar billede Syska Mester
21. december 2011 - 14:34 #2
En helt anden ting er at den oversætter det til JavaScript, hvis ClientValidation er slået til, det kan måske også give nogen problemer.
Avatar billede badal Nybegynder
21. december 2011 - 17:23 #3
Det er som om det syntaksen der skal være anderledes i .NET. Client er ikke slået til.
Avatar billede Syska Mester
21. december 2011 - 18:08 #4
Den er på nogen områder om anderledens.

mvh
Avatar billede arne_v Ekspert
22. december 2011 - 00:35 #5
Regex er ikke en god loesning.

Jeg har svaert ved at se pointen i en regex som forhindrer 2011-12-24 men tillader 2011-12-34 !

Du boer skrive noget validator kode.
Avatar billede badal Nybegynder
22. december 2011 - 10:16 #6
Det er en kun lille udsnit af koden jeg havde med. Jeg har en anden validator der forhindre at man kommer igennem med 2011-12-34.

Hvis jeg bare kan få det her regex til at virke at den reagerer på at brugeren har tastet 2011-12-24 vil det løse mit problem.
Avatar billede badal Nybegynder
22. december 2011 - 15:34 #7
Hmm jeg er kommet frem til at den ikke melder fejl 2011-12-01 og 2001-12-02, men gør det på alle andre datoer.

Findes der en "not" i regex? har læst mig til at ^ skulle være men det virker bare ikke.

Bruger følgende regex:
ValidationExpression="^2011-12-01|2011-12-02"
Avatar billede arne_v Ekspert
23. december 2011 - 01:58 #8
Den anden validator er vel programmatisk ikke regex - saa hvorfor ikke lade den haandtere jule aftens dag ogsaa.
Avatar billede badal Nybegynder
23. december 2011 - 10:02 #9
Så lykkedes det mig at lave en Regex der kunne give mig det ønskede resultatet.

Sådan skal den se ud, hvis andre nogen sinde skulle få brug for det.

^((?!((.*2011-12-24)|(.*2011-12-25))).)*$

Arne>> Jeg kunne godt have udviddet den anden validator, til at kunne håndtere dette også, men det var et specielt tilfælde, og syntes at det var nemmere med regex.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester