Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyrażenie regularne sprawdzające poprawność miesiaca
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
zaba285
witam, zrobiłem sobie małego potworka z wyrażenia regularnego, które ma dopuszczać tylko wartości od 1 do 12 w formularzu (cyfry symbolizujące miesiąc)

var miesiac = /(1|2|3|4|5|6|7|8|9|10|11|12)$/;

niestety nie działa, bo jak wprowadzę np 99 to przechodzi, a chce żeby powiadamiało przez alert:

if (!miesiac.test(FMonth.value)) komunikat = 'pole miesiac musi miec wartosc od 1 do 12';

pomoże ktoś?
vokiel
A może bez kombinowania z wyrażeniami:
  1. <?php
  2. var FMonthVal = parseInt(FMonth.value);
  3. if (FMonthVal<13 && FMonthVal>0){
  4.    // ok
  5. }
  6. ?>


A jeśli już koniecznie na wyrażeniach, to musisz ustawić (0-1){1} dla pierwszego znaku, i (0-9){1} dla drugiego jeśli pierwszy 0 i (1-2){1} jeśli pierwszy równy 1. Więc robi się to już ciut bardziej skomplikowane winksmiley.jpg
Fifi209
Nie wiem po co bawić się z wyrażeniami jak można po prostu instrukcjami warunkowymi sprawdzić...

Kod
/(1|2|3|4|5|6|7|8|9|10|11|12)$/;


Po pierwszym slashu daj ^ i będzie śmigało raczej.

Kod
/^(1|2|3|4|5|6|7|8|9|10|11|12)$/;
zaba285
Cytat(fifi209 @ 9.07.2009, 17:46:34 ) *
Nie wiem po co bawić się z wyrażeniami jak można po prostu instrukcjami warunkowymi sprawdzić...

Kod
/(1|2|3|4|5|6|7|8|9|10|11|12)$/;


Po pierwszym slashu daj ^ i będzie śmigało raczej.

Kod
/^(1|2|3|4|5|6|7|8|9|10|11|12)$/;

masz racje, zrobiłem listę, bo to lepsze rozwiązanie:
  1. <?php
  2.            
  3.                echo "<select name='FMonth'>";
  4.                for ($i=1; $i<13; $i++) {
  5.                echo "<option value='$i'>$i</option>";
  6.                }
  7.            ?>

a to pytanie to przez ciekawość, dociekliwość i chęć ogarnięcia wyrażeń regularnych ;]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.