Autor Zpráva
milhaushk
Profil
Zdravím vás,

mám menší problém s primitivním ověřením jednoho pole ... chci, aby návštěvník zadal něco ve tvaru 20RR-MM-DD, řeším to takto (samozřejmě, že i tak tam může zadat nějakou blbost, ale o to nejde):

       rd = new RegExp("^(20\d{2})(-\d{2}){2}$");
	        if (!rd.test(formular.datum.value))
	        {
	          alert("Zadal jste špatně datum!");
	          formular.datum.focus();
	          return false;
	        }


Bohužel to nefunguje, problémem se zdá být \d, protože když zkusím místo něj dát tečku, tak to funguje:

        rd = new RegExp("^(20.{2})(-.{2}){2}$");
	        if (!rd.test(formular.datum.value))
	        {
	          alert("Zadal jste špatně datum!");
	          formular.datum.focus();
	          return false;
	        }


Nevíte, co s tím? Předem dík.
Leo
Profil
1, proc new Regexp a ne prosty literal regularniho vyrazu?
2, naistalujte si program Regex Coach a odladte si to

Leo
ah01
Profil
milhaushk
"^(20\\d{2})(-\\d{2}){2}$"

Zadáváš reg. výraz jako text. Pokud chceš v textu zapsat zpětné lomítko musíš ho napsat zdvojené „\\“ (escape výraz).
milhaushk
Profil
Leo:
1. To jsem jen odněkud zkopíroval, nevím, jaký je tam rozdíl ... Na javascript jsem lámer.
2. Nainstaloval jsem si to, ještě to prozkoumám, díky.

ah01:
Aha, teď už to funguje, díky moc.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0