Avatar billede finger Nybegynder
30. marts 2005 - 11:22 Der er 15 kommentarer og
1 løsning

Hjælp til regexvalidator expression

Hej,

jeg har en aspnet side med et inputfelt hvor jeg vil have en regularexpressionvalidator for at kontrollere at de taster det rigtige.
Nu er jeg ikke ret god til at sammensætte expressions og søger derfor lidt hjælp.
stregen skal være således:

Minimum 5 karakterer
Maximum 20 karakterer
Minimum indeholde 1 bogstav
Kun karakterer i intervallerne a-z, A-Z og 0-9 må benyttes
Avatar billede erikjacobsen Ekspert
30. marts 2005 - 11:30 #1
Kravet om minimum 1 bogstav sammenholdt med længde på 5-20 tegn, gør det svært at lave fornuftigt med regulære udtryk alene. Må jeg foreslå et separat test for længde, så du også har mulighed for at give en sigende besked ("skal være mindst 5 tegn"). Du siger ikke hvilket sprog, så jeg har lavet dig et eksempel i Perl, du kan lege videre med:


$felt="f3455";

if ($felt=~/^[a-z0-9]*[a-z][a-z0-9]*$/i && length($felt)>=5 && length($felt)<=20) {
  print "OK\n\n";
} else {
  print "FEJL\n\n";
}
Avatar billede finger Nybegynder
30. marts 2005 - 11:44 #2
det er i asp.net c#.

Med ovenstående fandt jeg frem til:
[a-zA-Z0-9]*[a-zA-Z][a-zA-Z0-9]*

men der mangler jo stadig længden. kan det ikke laves i (evt en anden) regularexpressionvalidator?
Avatar billede erikjacobsen Ekspert
30. marts 2005 - 11:48 #3
Jo, det kan man da.

  .{5,20}

siger ok, hvis der er mellem 5 og 20 tegn. Med en RegularExpressionValidator kan
jeg godt se du gerne vil holde den som regulært udtryk.

(og en anden gang kan du skrive lidt mere om i hvad sammenhæng du skal bruge den - det
kan jo være det hjælper)
Avatar billede erikjacobsen Ekspert
30. marts 2005 - 11:48 #4
Hov - der stod jo "aspnet" - jeg overså det nok fordi det stod med små bogstaver ;))
Avatar billede finger Nybegynder
30. marts 2005 - 11:54 #5
:)
nu virker det - dog med 2 validators, men det går.
smid et svar.
Avatar billede erikjacobsen Ekspert
30. marts 2005 - 11:56 #6
Jeg samler ikke på point, tak.

Prøv lige at vente om der skulle være en eller anden, der har en genial løsning, der
kan klare det i eet udtryk - jeg kan godt, men det bliver megastort...
Avatar billede yellow Nybegynder
30. marts 2005 - 11:59 #7
Jeg fandt frem til 2 Validators også...men det var vel det du allerede havde?

<asp:textbox id="textbox1" runat="server"/>
<asp:RegularExpressionValidator id="valRegEx1" runat="server"
    ControlToValidate="textbox1"
    ValidationExpression="[a-zA-Z0-9]{5,20}"
    ErrorMessage="Fejl: Du må benytte tegnene a-z, A-Z, 0-9 og feltet skal indeholde mellem 5 og 20 tegn"
    display="dynamic">*
</asp:RegularExpressionValidator>
<asp:RegularExpressionValidator id="valRegEx2" runat="server"
    ControlToValidate="textbox1"
    ValidationExpression=".*?[a-zA-Z].*?"
    ErrorMessage="Fejl: Der skal være mindt ét bogstav"
    display="dynamic">*
</asp:RegularExpressionValidator>
Avatar billede finger Nybegynder
30. marts 2005 - 12:17 #8
jeg kører disse 2:

<asp:RegularExpressionValidator id=RegularExpressionValidator1 style="Z-INDEX: 104; LEFT: 376px; POSITION: absolute; TOP: 488px" runat="server" ErrorMessage="ikke indhold" ControlToValidate="TextBox1" ValidationExpression="[a-zA-Z0-9]*[a-zA-Z][a-zA-Z0-9]*"></asp:RegularExpressionValidator>
<asp:RegularExpressionValidator id=RegularExpressionValidator2 style="Z-INDEX: 105; LEFT: 424px; POSITION: absolute; TOP: 448px" runat="server" ErrorMessage="RegularExpressionValidator" ControlToValidate="TextBox1" ValidationExpression=".{5,20}"></asp:RegularExpressionValidator>
Avatar billede yellow Nybegynder
30. marts 2005 - 12:23 #9
Tja, begge virker...kommer an på hvordan du vil dele fejlmeddelelserne op.
Avatar billede finger Nybegynder
30. marts 2005 - 12:44 #10
ja, men nu er den her :-D den store forkromede løsning med alt-i-et. tadaaaaa!!!

.*(?=.{5,20})(?=.*[a-zA-Z])(?=.*[a-zA-Z0-9]).*
Avatar billede erikjacobsen Ekspert
30. marts 2005 - 12:51 #11
Ikke helt. Du accepterer også fx "hejsameddig-"
Avatar billede finger Nybegynder
30. marts 2005 - 15:23 #12
"hejsameddig-" bliver ikke accepteret i min control. "hejsameddig" virker fint, hvilket er korrekt.
Avatar billede finger Nybegynder
30. marts 2005 - 15:26 #13
øv. du havde ret.
men denne ser ud til at virke...
.*(?=.{5,20})(?=.*[a-zA-Z])(?=.*[a-zA-Z0-9]).*[a-zA-Z0-9]
Avatar billede finger Nybegynder
30. marts 2005 - 15:28 #14
argh. den godkender mere end 20 tegn :-[.
tror det bliver løsningen med 2 validators.
Avatar billede erikjacobsen Ekspert
30. marts 2005 - 15:35 #15
syn's nok ;)

Ideen med lookahead er god, men jeg tror du skal nøjes med

(?=.{5,20})[a-z0-9]*[a-z][a-z0-9]*
Avatar billede erikjacobsen Ekspert
30. marts 2005 - 15:35 #16
(Og bruger man den i Perl skal der lige ^....$ rundt om - hvis andre skulle have lyst til at prøve)
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
Kurser inden for grundlæggende programmering

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