Avatar billede herchin Nybegynder
12. december 2005 - 11:53 Der er 6 kommentarer og
1 løsning

Match med Regex

Jeg har et regulært udtryk, som gerne skulle matche alle decimaltal. Min validering foretages løbende på textbox1 i nedestående kode. Det regulære udtryk i mit leave event skulle gerne sikre, at der aldrig bliver indtastet andet end decimaltal...

private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
    string exp = @"
  • ?(\d*)(,\d+)?";
    string tester = string.Concat(textBox1.Text, e.KeyChar);

    System.Text.RegularExpressions.Match matchNumber = System.Text.RegularExpressions.Regex.Match(tester, exp);
    if (!matchNumber.Success)
        e.Handled = true;
}

Det virker slet ikke... Jeg kan skrive alle tegn.
Avatar billede the_party_dog Nybegynder
12. december 2005 - 12:15 #1
Tror du skal fjerne det sidste ?...
Avatar billede the_party_dog Nybegynder
12. december 2005 - 12:40 #2
string exp = @"^\d+,?\d*$";
Avatar billede the_party_dog Nybegynder
12. december 2005 - 12:48 #3
Sådan her:

string exp = @"^(\d+,?\d*|-?\d*,?\d*)$";
            string tester = string.Concat(textBox1.Text, e.KeyChar);

            if(e.KeyChar != Convert.ToChar(8) && e.KeyChar != Convert.ToChar(45))
            {
                System.Text.RegularExpressions.Match matchNumber = System.Text.RegularExpressions.Regex.Match(tester, exp);
                if (!matchNumber.Success)
                {
                    e.Handled = true;
                }   
            }
            else
            {
                e.Handled = false;
            }

Den kan vist det hele du har brug for :-)
Avatar billede herchin Nybegynder
13. december 2005 - 09:39 #4
Det er tæt på!

Det er bare muligt at indtaste f.eks. -4------- Man kan indsætte '-' på alle pladser i strengen. Det er ikke lovligt!
Avatar billede the_party_dog Nybegynder
13. december 2005 - 11:25 #5
string exp = @"^(\d+,?\d*|-?\d*,?\d*)$";
            string tester = string.Concat(textBox1.Text, e.KeyChar);

            if(e.KeyChar != Convert.ToChar(8))
            {
                if(e.KeyChar != Convert.ToChar(45))
                {
                    System.Text.RegularExpressions.Match matchNumber = System.Text.RegularExpressions.Regex.Match(tester, exp);
                    if (!matchNumber.Success)
                    {
                        e.Handled = true;
                    }   
                }
                else
                {
                    if(tester.Substring(0, tester.Length -1).IndexOf("-") < 0)
                    {
                        e.Handled = false;               
                    }
                    else
                    {
                        e.Handled = true;
                    }
                }
            }
            else
            {
                e.Handled = false;
            }
Avatar billede the_party_dog Nybegynder
13. december 2005 - 11:25 #6
Problemet var at jeg testede på - tegnet, så den sprang over vores RegEx. Nu har jeg lige rettet det til, det burde spille.... :)
Avatar billede herchin Nybegynder
13. december 2005 - 12:48 #7
Åh ja det kan jeg se... Troede det var en fejl i regExp. Well, takker for hjælpen.
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