Autor Zpráva
Darker
Profil
Přes funkci:
p=new RegExp("^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$","i")

p=/^([w-]+(?:.[w-]+)*)@((?:[w-]+.)*w[w-]{0,66}).([a-z]{2,6}(?:.[a-z]{2})?)$/i  //toto funkce vrací

První zápis mi potom vrací při použití metody test pokaždé false. Moc to nechápu, podle W3C shools je v pořádku.

Původní zápis:
p=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
Witiko
Profil
Darker:
W3C shools
W3C schools nejsou zrovna vhodným referenčním materiálem. Obsahují řadu nevhodných praktik a faktických nedostatků.

Při zápisu zpětného lomítka je jej třeba při jeho zápisu v textové literále zadat dvakrát (podobný problém). Používá se totiž k escapování.
new RegExp("^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$","i");
se rovná (jak správně uvádíš v originálním příspěvku)
/^([w-]+(?:.[w-]+)*)@((?:[w-]+.)*w[w-]{0,66}).([a-z]{2,6}(?:.[a-z]{2})?)$/i

Jak vidíš, veškerá zpětná lomítka jsou fuč, což způsobí, že před sebou máme zcela rozdílný regulární výraz. Správný zápis přes textovou literálu je následující:
var p=new RegExp("^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(?:\\.[a-z]{2})?)$","i");

Doporučuji však v případě statického regulárního výrazu použít zápis pomocí RegExpové literály /výraz/praporky. Jak sám vidíš, je přehlednější a podle testů i rychlejší na vyhodnocování (to platí i pro new Array vs. [] a new Object vs. {}).
Darker
Profil
Witiko:
je přehlednější
PSpad ho nezvýrazňuje tak pěkně jako JUSH :)
To je jediný důvod, proč jsem ho chtěl použít, ačkoli to o jeho rychlosti jsem netušil.

Dík za odkaz na W3fools :)

W3schools:„professional web developers often prefer HTML editors like FrontPage or Dreamweaver, instead of writing plain text. “
:D
DarkMeni
Profil
Dalo by se nějak napsat toto v literálu?
function nejaka_funkce(argumenty){
  var Regexp = new RegExp('^('+argumenty+').*?('+argumenty+')$','i');
  //...
}
nejaka_funkce('slovo');
//V Regexp pak vznikne asi /^(slovo).*?(slovo)$/i

Ale když je literál rychlejší tak dá se to nějak v něm (aby do sebe dal hodnotu proměnné)?
Chamurappi
Profil
Reaguji na DarkMeniho:
Bohužel ne. Také mi operátor sčítání u regulárních výrazů chybí.


Reaguji na Witika:
Obsahují řadu nevhodných praktik a faktických nedostatků.
Fíha, to jsem netušil, že existuje taková hezky sestavená vlna odporu i v zahraničí. Skoro mi připadalo, že válku s tímhle léty prověřeným zdrojem (dez)informací vedu sám (a jen na bitevním poli DJPW).
peta
Profil
http://peter-mlich.wz.cz/web/links.htm#regularni_vyrazy
Visibone je skvela literatura.

w3school je neco jako jaknaweb. Neco tam pravda je, ale neco ne. Zvlast chudak zacatecnik to nerozlisi :)

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