Autor Zpráva
Borius
Profil
Na diskuzním fóru se používá formátování [citace]…[/citace]. Avšak někdy diskutující omylem umaže část uzavírající značky. Chtěl bych tuto situaci opravit, ještě před odesláním na server.
text=text.replace(/\[\/cit(a(c(e()?)?)?)?[^\]]/g,"[/citace]");
text=text.replace(/[^\[]\/(((c)?i)?t)?ace\]/g,"[/citace]");
Avšak patrně mám chybný regulární výraz, neboť se opravují i nepoškozené značky – přidává se ještě jedna hranatá závorka. Jak by měly vypadat správné regulární výrazy? Tedy – čím bych měl nahradit [^\]] a [^\[]?
peta
Profil
([/citace]) | \[\/cit(a(c(e()?)?)?)?[^\]] tak nejak podobne?
Cili, nejdriv se pokusi nahradit [/citace] a pak teprve uvazuje o moznosti nedokonceni.
Chamurappi
Profil
Reaguji na Boria:
Avšak někdy diskutující omylem umaže část uzavírající značky.
Touhle automatickou opravou akorát vytloukáš klín klínem.
Zaveď jednodušší značky, kde jde udělat méně chyb. Na českých klávesnicích nejdou zrovna moc jednoduše zapsat hranaté závorky, takže když už používáš vlastní syntaxi (s českým slovem), mohl bys použít i jiné závorky a tím snížit šanci, že člověk udělá chybu, kterou sice uvidí, ale nedovede ji snadno opravit.

opravit, ještě před odesláním na server
Proč ne na straně serveru? Z jakého důvodu to má být u klienta?
Borius
Profil
peta:
Cili, nejdriv se pokusi nahradit [/citace] a pak teprve uvazuje o moznosti nedokonceni.
To zní dost rozumně, zajímavá myšlenka! To by mohlo být i dobrým řešením.

Chamurappi:
Na českých klávesnicích nejdou zrovna moc jednoduše zapsat hranaté závorky, takže když už používáš vlastní syntaxi (s českým slovem), mohl bys použít i jiné závorky a tím snížit šanci
To hranaté závorkování je kvůli obecným zvyklostem, protože je to zažité (na fórech, v příspěvkových diskuzích, na blozích apod.), z toho důvodu je použito. Ono “citace” je jednou z vícera položek, ve skutečnosti jsou i další – obrázky, videa, odkazy, citace diskutujících i citace děl či autorit aj. Nicméně máš pravdu v tom, že by to šlo udělat „opravitelněji“ pro běžného přispěvatele.

Proč ne na straně serveru? Z jakého důvodu to má být u klienta?
Před odesláním probíhá více kontrol, u některých se vychází z právě zobrazené stránky. Proto je kontrola u klienta, aby se nemusel stejný zdroj sestavovat ještě jednou na serveru. Navíc, v některých případech je odesílatel vyzván k určitému doplnění či úpravě. Některé kontroly (jako zde otazovaná) by jistě bylo snadnější doopravit na serveru, nicméně požadavek provozovatele je provést u klienta co nejkompletnější kontrolu a na serveru již vycházet z předpokladu, že zaslaná syntaxe příspěvku je v pořádku. Osobně bych sice preferoval dělat maximum na serveru a pouze nezbytné u klienta, avšak v tomto případě o tom nerozhoduji; požadavek je daný.
peta
Profil
Mozna bych to resil jeste takto, od nejvetsiho po nejmensi:
[/cit(?:ace|ac|a).*?]
A ty zavorky se fakt pisi dost spatne na ruznych notebook klavesnicich.

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