Avatar billede simonmckay Nybegynder
30. juli 2006 - 00:27 Der er 6 kommentarer

Validering af sidetal fx. 1,3,5-8,14

Hej
Er der en der ligger inde med, eller som vil kreere, en javascript regexp til at sikre at et input opfylder nedenstående krav?

1) heltal der adskilles af enten komma eller bindestreg
2) input starter og slutter på heltal
3) 0 er ikke tilladt
4) tallet til højre for et tal skal altiv værre større end dette.

Eksempel på validt input: 1,3,5-8,14

Det er præcis den samme funktion som kan benyttes når man printer fra Word til at vælge hvilke sider der skal med ud.

Håber ovenstående er fyldestgørende.

Mvh Simon K
Avatar billede erikjacobsen Ekspert
30. juli 2006 - 00:42 #1
Du kan ikke tjekke det med talstørrelser i et regulært udtryk, men det kan du så i kode bagefter. Eksempel i PHP:

  function sidetal($a) {
    $r="[1-9][0-9]*(-[1-9][0-9]*)?";
    if (preg_match("/^$r?(,$r)*$/",$a)) {
      $t=split(",|-",$a);
      for ($i=1;$i<count($t);$i++)
        if ((int)$t[$i-1]>=(int)$t[$i])
          return false;
      return true;
  } else
    return false;
  }
Avatar billede simonmckay Nybegynder
30. juli 2006 - 00:55 #2
Hej Erik
Tak for kommentaren. Jeg må hellere lige præcisere. Det er tallet 0 og ikke karateren "0" der ikke er tilladt. Fx. er 10 tilladt.
Dette er du vist med på, men jeg skal bruge noget der kan køre clientside i javascript (dette kan php muligvis også, men jeg ved ikke hvordan). Siden afvikles på en Windows server og serverside bruger jeg VBScript i ASP.
Mvh Simon K
Avatar billede erikjacobsen Ekspert
30. juli 2006 - 00:57 #3
Nå, ok, men så skal det bare skrives i JavaScript. Jeg må vist hellere lige rette
  if (preg_match("/^$r?(,$r)*$/",$a)) {
til
  if (preg_match("/^$r(,$r)*$/",$a)) {
i ovenstående. Men i JavaScript må det blive:

  function sidetal($a) {
    if ($a.match(/^[1-9][0-9]*(-[1-9][0-9]*)?(,[1-9][0-9]*(-[1-9][0-9]*)?)*$/)) {
      $t=$a.split(/,|-/);
      for ($i=1;$i<$t.length;$i++)
        if (parseInt($t[$i-1])>=parseInt($t[$i]))
          return false;
      return true;
  } else
    return false;
  }
Avatar billede simonmckay Nybegynder
30. juli 2006 - 01:48 #4
Hej Erik

Jeg har lige siddet og forsøgt at tæske den, men det ser ud som om at du har løst opgaven. Tak for det. Læg hellere et svar, så jeg kan skyde nogle point i din retning.

Mvh Simon K
Avatar billede erikjacobsen Ekspert
30. juli 2006 - 09:39 #5
Det lyder godt, at den virker. Jeg samler slet ikke på point, tak. Svar selv, accepter eget svar.

Men skal du være sikker på at formatet er i orden, så bør du også tjekke det på serversiden.
Avatar billede simonmckay Nybegynder
30. juli 2006 - 10:59 #6
Det er også rigtigt - en irriterende ting, men rigtigt.

Tak for den rene altruisme.

mvh Simon K
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