Autor | Zpráva | ||
---|---|---|---|
Darker Profil |
#1 · Zasláno: 10. 7. 2011, 17:41:50
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 |
#2 · Zasláno: 10. 7. 2011, 18:47:12 · Upravil/a: Witiko
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"); /^([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í RegExp ové 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 |
#3 · Zasláno: 10. 7. 2011, 19:18:05 · Upravil/a: Darker
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 |
#4 · Zasláno: 11. 7. 2011, 09:06:59
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 |
#5 · Zasláno: 11. 7. 2011, 09:17:46
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 |
#6 · Zasláno: 11. 7. 2011, 10:33:53
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 :) |
||
Časová prodleva: 13 let
|
0