Avatar billede c-sharp Nybegynder
31. maj 2005 - 06:42 Der er 9 kommentarer og
1 løsning

Hjælp til form validation

Jeg har en tekstboks jeg skal validere på, der skal kontrolleres på om det indtastede er et tal (heletal eller kommatal). Hvordan skriver jeg "ValidationExpression" til det?

Jeg har i det heletaget lidt svært ved at skrive disse "ValidationExpression", Er der evt. en der kan forklare hvordan det fungere?
Avatar billede davidfossil Nybegynder
31. maj 2005 - 22:49 #1
Der er så vidt jeg kan se to muligheder:

1) En RegularExpressionValidator der checker mod fx denne expression:
\d+(,\d+)?
Det skal nok lige nævnes at jeg ikke selv har testet denne... :)

2) En CustomValidator med en ServerValidate hvor du programmatisk forsøger at parse det indtastede som en double. Eks:

protected void myValidator_ServerValidate(object sender, ServerValidateEventArgs e)
{
  try
  {
      double.Parse(myTextBox.Text);
      e.IsValid = true;
  }
  catch
  {
      e.IsValid = false;
  }
}
Avatar billede davidfossil Nybegynder
31. maj 2005 - 22:52 #2
Vil du studere "reqular expressions" nærmere så søg på google - der er rigtig mange sider med tutorials og guides.

Her er et link som jeg en gang har gemt og bruger til opslag:
http://www.amk.ca/python/howto/regex/
Artiklen er egentlig skrevet omkring programmeringsproget Phyton, men regex er temmelig (helt?) ens på tværs af værstsprogene.
Avatar billede c-sharp Nybegynder
01. juni 2005 - 08:46 #3
Det endte med at blive følgende udtryk: ([1-9]\d+|\d)(,\d+)?

Tak til davidfossil for at deltage, smid et svar så får du lift point for dine kommentare
Avatar billede davidfossil Nybegynder
01. juni 2005 - 09:22 #4
Svar

Tillader mig lige at forkorte din regex en smule - burde give det samme resultat :)
[1-9]\d*(,\d+)?

Forklaring:
[1-9]  Ét ciffer fra 1 til 9.
\d*      Ingen eller flere cifre fra 0 til 9.
(,\d+)?  Evt. et komma efterfulgt af én eller flere til fra 0 til 9.

VIGTIGT!
For at dette virker efter hensigten skal du fortælle hvor vi starter og slutter.

^  Fortæller at der kun må matches fra starten af strengen.
$  Matcher slutningen af strengen.
Avatar billede davidfossil Nybegynder
01. juni 2005 - 09:24 #5
(og så fik jeg ramt send ved en fejl - fortsætter lige)

Den endelig regex må altså være:
^[1-9]\d*(,\d+)?$

Har du ikke disse tegn omkring vil fx "heeeeej123segse" også matche, idet der findes en forekomst af det du søger efter i strengen. Med ^ forreste og $ bagerst matches der således kun hvis hele strengen passer på din expression.

Got it? :o)
Avatar billede davidfossil Nybegynder
01. juni 2005 - 09:27 #6
Ok, min fejl - din regex var bedre :o)
Den skal bare lige have ^ og $ på:

^([1-9]\d+|\d)(,\d+)?$
Avatar billede c-sharp Nybegynder
13. juni 2005 - 13:06 #7
hvad gør ^ og $ ?
Avatar billede c-sharp Nybegynder
28. juni 2005 - 08:44 #8
Er der mere hjælp her?
Avatar billede davidfossil Nybegynder
04. juli 2005 - 14:14 #9
Copy/paste fra mit svar den 1/6 :

^  Fortæller at der kun må matches fra starten af strengen.
$  Matcher slutningen af strengen.

Har du ikke disse tegn omkring vil fx "heeeeej123segse" også matche, idet der findes en forekomst af det du søger efter i strengen. Med ^ forreste og $ bagerst matches der således kun hvis hele strengen passer på din expression.
Avatar billede c-sharp Nybegynder
03. august 2005 - 11:26 #10
Jeg 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