Autor Zpráva
DarkMeni
Profil
	
var Reg = new RegExp("^[a-z0-9\.\_\-]{1,25}@[a-z0-9\.\_\-]{1,25}\.[a-z]{2,4}$","i");
var Result = Reg.test(Value);

Toto by mělo souhlasit a vrátit true jen když Value bude: email@server.cz a nebo podobně
Ale z nějakého důvodu mi to vesele odsouhlasí i email@servercz nebo email@server a tu tečku ignoruje, jak to?
Witiko
Profil
DarkMeni:
To bude tím, že ty ten RegExp musíš escapovat dvakrát, jelikož ho předáváš jako textovou literálu. Tzn.:
new RegExp("\\.").source === /\./.source

Jednoduše využij literálového zápisu regulárních výrazů a pojede ti to jak má:
var Reg = /^[a-z0-9\.\_\-]{1,25}@[a-z0-9\.\_\-]{1,25}\.[a-z]{2,4}$/i;
var Result = Reg.test(Value);
DarkMeni
Profil
Asi to bylo tím, už to funguje jak má, díky
peta
Profil
Kdyztak zkousej na regexp.cz. Nedavno jsem koukal, ze inovovali stranku. Ale na to escapovani tam neupozornuji, uz jsem na to tez parkrat narazil, nekdy jsou nutna i 3 lomitka. A na phpnet byl dokonce jakysi priklad s peti :)
Witiko
Profil
peta:
Naštěstí většinou stačí literálový zápis, který omezením řetězců netrpí a zároveň co jsem testoval ho většina implementací i přechroustá rychleji než new RegExp( ... ).

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:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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

0