Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Regulární výraz

Aktivity
Avatar
Martin Štěpánek :17.4.2016 21:30

Ahoj,
já nejsem přes Javascript moc dobrý natož přes regulární výrazy.
Mohl by mi tu někdo prosím sestavit script, který by změnil url podle příkladu? :-)
Z http://mojeadresa.wz.cz?… udělá http://mojeadresa.wz.cz/clanky.php
Z http://mojeadresa.wz.cz?… udělá http://mojeadresa.wz.cz/clanek.php?…
atd...
(Aby vzal parametr stranka jako název souboru a zbytek jako parametry.)
Myslím to obecně ne jen tento příklad.
Předem moc děkuji za pomoc. :-)
M.

Odpovědět
17.4.2016 21:30
Všechno jde naprogramovat, chce to jen čas a chuť...
Avatar
Lako
Člen
Avatar
Odpovídá na Martin Štěpánek
Lako:17.4.2016 22:06

(.\/)(\?stran­ka=)(\w+)(.)

A replace:
$1$3.php$4\n

Ten replace půjde i jinak.
Nevím jak s javascriptem, ale tu to funguje fajn:
http://regexr.com/3d7v1

 
Nahoru Odpovědět
17.4.2016 22:06
Avatar
Lako
Člen
Avatar
Odpovídá na Lako
Lako:17.4.2016 22:11

Edit: Nemá to být kurzíva, ale za tečkou je hvězdička, viz odkaz.

 
Nahoru Odpovědět
17.4.2016 22:11
Avatar
Odpovídá na Lako
Martin Štěpánek :18.4.2016 6:54

Super dík, akorát to udělá
http://mojeadresa.wz.cz/…ek.php&id=18
Ale já právě potřebuji http://mojeadresa.wz.cz/clankek.php?… (otazník)
:-)

Nahoru Odpovědět
18.4.2016 6:54
Všechno jde naprogramovat, chce to jen čas a chuť...
Avatar
Lako
Člen
Avatar
Odpovídá na Martin Štěpánek
Lako:18.4.2016 21:56

Zkus tohle: (.hvezda\/)(\?stran­ka=)(\w+)&?(.hvez­da)

Jediný problém s tím je ten, že pokud tam nemáš žádné atributy, tak ti na konci zůstane otazník.

To vyřešíš tím, že to projedeš podruhé tímto:
(.+)(\?)\s

http://regexr.com/3d854

Možná to jde v jednom kroku, ale takto to snad bude stačit.

 
Nahoru Odpovědět
18.4.2016 21:56
Avatar
1Pupik1989
Člen
Avatar
1Pupik1989:19.4.2016 11:54

A co třeba použít callback?

var regex = /\?stranka=([^\&]+)(?:&(.*))?$/;

var x = [
  'http://mojeadresa.wz.cz/?stranka=clanky',
  'http://mojeadresa.wz.cz/?stranka=clankek&id=18'
];

var result;

for(var i=0;i<x.length;i++){
  result = x[i].replace(regex,function(m,page,attrs){
    return attrs ? page+'.php?'+attrs : page+'.php';
  });

  console.log(result);
}
 
Nahoru Odpovědět
19.4.2016 11:54
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.