Autor Zpráva
kuzmic
Profil
Dobrý den,

chtěl bych poprosit o radu, jak správně v poli zapsat regulární výraz:

Moje pole s regularním výrazem vypadá takto:

var prvky = {
    "email":"/^[\w\.]+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/"
};

Ale při validaci to bohužel neprojde. Nevíte prosím jak by to mělo být zapsané správně?

Děkuji za jakékoli rady.

Kuzmic
Joker
Profil
A ta validace vypadá jak?
kuzmic
Profil
Mám právě pole input do kterého uživatel musí vložit správně zadaný email. Když do "email": vložím např.: "email"."Test" a do pole vložím Test tak validace proběhne. Pokud ale "email":"/^[\w\.]+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/" zadán např.: test@test.cz tak to neprojde.

Poslal bych Vám ukázku kódu, ale momentálně to přestalo fungovat celé, když jsem to různě upravoval. :-(
Kajman
Profil
Regární výraz se píše bez uvozovek okolo. Pokud potřebujete řetězec a z něho teprve udělat regulární výraz, tak si zkuste zduplikovat zpětná lomítka, která používá i řetězec.
Chamurappi
Profil
Reaguji na kuzmice:
Dotaz, tak jak je napsán, nesouvisí s jQuery.

Moje pole s regularním výrazem vypadá takto
To není pole, ale objekt, ve kterém je jeden člen jménem email, v němž je řetězec /^[w.]+@[a-zA-Z_]+?.[a-zA-Z]{2,3}$/, nikoliv regulární výraz.
Syntaxe JavaScriptu zná přímo literály regulárních výrazů. Podobně jako se literál řetězce zapisuje ohraničený uvozovkami, literál reguláru je ohraničený lomítky. Pouze lomítky.

Mimochodem, ten uvedený výraz mi připadá příliš restriktivní. Když budu mít třeba e-mail s TLD .info, tak kontrolou neprojde. Podtržítko v části před zavináčem je také zakázané. Proč kontroluješ něco víc než přítomnost zavináče?
kuzmic
Profil
Chamurappi Přiznám se, že ten regularni vyraz pro email jsem našel jako vzorně někde na netu. Dal by se prosím upravit tak aby prošly všechny varianty?

Kajman: Nejsem v jQuery ani v regularech tak dobrý, myslíte, že by šlo porovnat hodnotu v proměnné s regularním vyrazem email? Jde o to, že v objektu bych rád měl více regularních vyrazu např. pro PSC pomocí kterých bych rád validoval další inputy
Chamurappi
Profil
Reaguji na kuzmice:
Dal by se prosím upravit tak aby prošly všechny varianty?
Třeba /.@[^.]+\..{3,}$/. Ale nevím, co všechno bys chtěl nedovolovat… ono v tomto případě důsledné kontrolování syntaxe nemá moc smysl.

Nejsem v jQuery ani v regularech tak dobrý
Tvůj problém skutečně nesouvisí s jQuery.

myslíte, že by šlo porovnat hodnotu v proměnné s regularním vyrazem email?
Pokud bude v prvky["email"] skutečně regulární výraz a ne řetězec, tak porovnání uděláš třeba prvky["email"].test(proměnná).
Joker
Profil
Kajman:
Regární výraz se píše bez uvozovek okolo.
Na druhou stranu kdyby v té validaci bylo něco new RegExp(prvky["email"]); tak by mu to asi fungovalo.
Proto jsem chtěl zjistit, jak vypadá ta validace.

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: