Autor Zpráva
Kirk Novák
Profil *
Potřebovoval bych si pro offline aplikaci udělat jednoduchý našeptávač, jeho realizaci mám hotovou, ale potřeboval bych ošefovat JS kód pro výběr shod. PHP server nebude k dispozici. AJAXovat se nebude....

Nyní používám konstrukci :

var re = new RegExp("~(" + str + "[^~]*)", "gi"); + while +  re.exec(jmena) ... atd.

a jména mám uložené v proměnné např. jmena="~Maxim Veliký~Josef Kajetán Tyl~Pavel Novák~Kateřina Tylová~

Funguje to slušně ale hledá to jen když píšu jména přesně tak jak jsou uložená, ale já bych potřeboval vylepšit regulár aby splnil toto:


mám např. seznam:

Maxim Veliký
Josef Kajetán Tyl
Pavel Novák
Kateřina Tylová

................

A potřebuji vyhodit shodu i když někdo začne psát např: "ty ka" tak vyhodit shody:

Josef Kajetán Tyl
Kateřina Tyhlová

Nebo při "ka"

Josef Kajetán Tyl
Kateřina Tyhlová


PS: jmen bude řádově jen několik stovek
Kubo2
Profil
Jednoducho začiatok reguláru ~ rozšír o medzeru: [ ~]
Keeehi
Profil
Ač jsou reguláry mocné, nikdy nezvládnou vše. Abych tomu pomohl, tak jsem je přepsal. Živá ukázka

Pokud to má vyhledávat jen od začátku slov, stačí přidat omezení do reguláru
reParts.push(new RegExp("(^|\\s)"+part, "i"));
xksák
Profil *
Keeehi:
Tvoje ukázka mi nějak nefachčí >>> i.imgsafe.org/a248134.gif ?
lionel messi
Profil
xksák:
Mne áno (dôkaz), chyba bude medzi klávesnicou a stoličkou.

Asi by bolo vhodné [#4] a [#5] zmmmazať, žiadnym spôsobom vlákno neobohacujú.

Tak asi nie. Ja som skúšal v najnovšej Mozille.
Bubák
Profil
Mi ukázka nefunguje, obrázek sem nedám. Nebude to prohlížečem? Zkoušel jsem jen ve staré Opeře a jsem líný zkusit to jinde.
xksák
Profil *
je to dost nedokonalé řešení vůči starším prohlížečům, protože v mnoha starších prohlížečích to nejde, u mně ani v IE8 ("Object doesn't support this property or method" ....), starší Chrome též problém, F 3.6 taky nic.... atd.
Keeehi
Profil
To bude tím, že konstrukce for .. of je jen v novějších prohlížečích. Není ale problém to nahradit starým klasickým cyklem.

Živá ukázka

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0