Fórumok
Üdvözletem!
A következőben szeretném a segítségeteket kérni:
Szükségem van egy olyan JavaScript REGEXP kifejezésre, ami például a következő stringeket engedi:
ABC12
D8Z9T
GL65N
azoban a következő típusokat tiltja:
1ABA2 - ismétlődő betűk
1AB1C - ismétlődő számok
12345 - 2-nél több szám
ABCDE - 3-nál több betű
AB12 - 5-nél kevesebb karakter
ABC123 - 5-nél több karakter
Csak a nagybetűk engedélyezettek!
Azt tudom, hogy a karaktereket így korlátozom, de ez ugyebár nem szűri ki például a duplázódásokat:
^[A-Z0-9]{5}$
Segítségeteket előre is köszönöm!
Üdv: t!
Hozzászólások
Regexpben ilyen állat márpedig nincsen...
Hát pedig jó lenne, ha lenne, basszus :).
Írsz egy pár soros validáló függvényt Javascriptben...
Mi az a pár sor Nekem :)
Nekem?
t
Igen
T
Tényleg nem sok:
-ha nem pontosan öt darab nagybetű-szám karakterből áll, akkor visszadobja, hogy hibás - egy regexp.
Ha pontosan öt hosszú, és csak nagybetűt-számot tartalmaz, akkor szétszeded karakterenként egy tömbbe, a tömböt rendezed:
Ha a tömb 2. eleme betű, vagy a 3. eleme szám, akkor hibás a kapott string, továbbá ha végigmész a tömbön, és van benne két azonos érték, akkor is. Ezt már meghagyom a kérdezőnek :-P
Persze a rendezett tömbből lehet stringet csinálni, amire egy jól irányzott regexp is elég :)
Vagy egy másik ötlet, két ciklussal: a külsőben i-vel végigmész 0-től 3-ig, a belsőben meg j-vel i+1-től 4-ig. A belső ciklusban a string i-edik és j-edik karakterét összehasonlítod - ha azonosak, a validáló függvényed hibával visszatér.
A külső ciklusban még megnézed, hogy az i-edik karakter szám-e, ha igen, akkor egy n változó értékét növeled. Ha n értéke nagyobb lesz, mint kettő, szintén visszatérhetsz hibával.
A külső ciklus után még megnézed a string i+1. (utolsó) karakterét, hogy szám-e, ha igen, növelsz egyet az n-en. Ha n értéke nem egyenlő 2-vel, akkor hibával, egyébként meg "rendben"-nel térhet vissza a validáló függvényed.
Lehet ezt ciklus nélkül is:
+1 Viszont innentől kezdve elmondható, hogy a js is lehet erősen write-only :)
http://stackoverflow.com/questions/664194/how-can-i-find-repeated-chara…
Nem állítom, hogy értem, azt sem, hogy ez kell neked, de nézd meg, hátha..
Akit tudja, csinálja, aki nem tudja, tanítja... Hm... igazgatónak talán még jó lennék. :)
Ránéztem, és Nekem is tetszett, de nem jutottam vele előrébb sajnos, ami nem azt jelenti, hogy nem ez lehet a jó út felé vezető ösvény. Köszi.
Tisztelettel felhivnam a Nagytiszteletu On figyelmet, hogy a magyarban a szemelyes nevmasok es hasonszoru tarsaik kisbetuvel irandok.
--
Helyesírás szempontjából igen. Viszont udvarias stílusban a második személy írható naggyal. Az első és harmadik személy viszont soha.
--
PtY - www.onlinedemo.hu
Mondott valamit magyaron is a tancsinéni, meg angolon is - egyikre se figyeltek oda igazán, és ez az öszvér lett belőle.
Nem tudom, erre az udvarias stilusra hozhatnal valami ertelmes referenciat. Meg nem lattam, hogy ennek lett volna barmi ertelme - a magyarban maga a magazodo stilus az udvariaskodas. Angoloknal tudom ezt elkepzelni, mert ott nincs kifejezett magazodas, hanem a szovalasztassal es a roviditesek elhagyasaval fejezik ki a formal kommunikaciot.
Arrol nem beszelve, hogy jelen esetben meg csak a gyanu sem all fenn.
--
> Nem tudom, erre az udvarias stilusra hozhatnal valami ertelmes referenciat.
http://mek.oszk.hu/01500/01547/01547.pdf, 149. pont:
Ez levelekben, hivatalos iratokban alkalmazható. 1985-ben (a tizenegyedik kiadás létrejöttekor) még ritka volt a fórumposzt, viszont elég közel áll hozzá. Én nem értek egyet a használatával, esetleg hivatalos levélben én is leírnám.
hrgy84 te meg mindenkibe belekötsz helyesírás-ügyileg, és többedszerre derül ki, hogy talán mégsem neked van igazad.
Kösz, én meg nem találtam volna...
Anno, amikor megboldogult magyar tanárom a hivatalos levelet tanította, említette. Sokat leveleztem ügyfelekkel, és hozzászoktam - gyakorlatilag mindenhol (még családon belül is így) használom, mert berögzült.
Sőt, a Veled, Neked, Benned, Hozzád, stb. is így jön - néha sajnos, de ez van - automatikusan.
--
PtY - www.onlinedemo.hu
El tudom kepzelni, hogy nekem ujabb helyesirasi szabalyzatot tanitottak, vagy pedig hianyos volt a magyartanarom ilyen iranyu magyarazata, mert en egyaltalan nem tudtam arrol, hogy ilyen szabaly letezik, sot egyszer veletlenul igy irtam valamit, akkor pirossal ala is huzta. Mentsegemre szolt, hogy fogalmazas volt, es eleve a regies stilust tuztem ki celul, igy a vegen nem jart erte pontlevonas.
"mindenkibe belekötsz helyesírás-ügyileg, és többedszerre derül ki, hogy talán mégsem neked van igazad."
Csak az nem hibazik, aki nem dolgozik. En ezt nem elem meg akkora tragediakent, rengeteget lehet ilyenekbol is tanulni.
--
> El tudom kepzelni, hogy nekem ujabb helyesirasi szabalyzatot tanitottak
FYI, az 1985-ös, tizenegyedik kiadás volt érvényben 2011-ig biztosan, de talán még ma is. Szóval nem lehet elképzelni, hogy ennél újabbat tanítottak neked. Két lehetőséget látsz: vagy a magyartanárod volt hülye, vagy mást tanított, de az fel nem merülne benned, hogy egyszerűen: rosszul tudtad.
"mert en egyaltalan nem tudtam arrol"
Nem tudom, miert kellene ezt jobban reszletezni. De mea maxima culpa. Elmegyek hamuert, epp kifogyott.
--
Az igazság kedvéért tegyük hozzá, hogy az akkori tankönyvekben a levélírás és annak szabályai a futottak még kategóriában voltak (de szerepeltek): gondoljunk csak bele, hány fogalmazást kellett írni nyári/téli élményekről, ill. olvasmányokról és hányszor kellett levelet írni ilyen céllal, és ebből hányszor nem családtagnak!
+1
Az idézet meg tőlem származik, úgyhogy kéretik nem plagizálni :D
--
PtY - www.onlinedemo.hu
Mar valaszoltak, szoval nem tudom potolni a copyrightot, remelem azert utolagosan ez egyszer engedelyezed a felhasznalast :-)
--
Nem az származik tőlem, amit idéztél, hanem az idézet, amit írtál... ;)
Nem tudom érthetőbben leírni :)
--
PtY - www.onlinedemo.hu
Ertettem elsore is ;-)
--
Ja, ok. Akkor használd bátran :)
--
PtY - www.onlinedemo.hu
Szerintem egy rakat zero-width assertion kellhet ide, de rohadt undorító lesz, ezt amúgy tényleg nem regexppel kellene...
--
perl-ben valami ilyesmi:
eredmény:
A tiszteletem a tiéd. De ezt a regexpet könnyebb lehetett megírni, mint megérteni (a validálásról már nem is beszélve). És ezzel el is dőlt a dolog, én ilyet senkinek nem javaslok.
> ezt a regexpet könnyebb lehetett megírni, mint megérteni
Így készült, ebből jobban látszik a szerkezete:
Plusz pár karakter kézzel.
Ez tetszik.
Lájk!
Link
Link
De legalább reménykedjünk abban, hogy szebbek, mint amilyen okosak...
--
PtY - www.onlinedemo.hu
Nagy szerencse, hogy azok, akik számára a tűz is érthetetlen, undorító vagy rangon aluli valami volt, automatikusan kiszelektálódtak eleink közül.
Azért egy tömör perl program inkább emlékeztet valami... minek is hívják? Obfuszkált? :D Szóval amolyan jól megkavart forráskódra, mint tisztességes programra.
Jól olvashatónak meg általában nem nevezhető.
Persze ez inkább user error, nem a nyelv hibája.
Aki tudja, csinálja, aki nem tudja, tanítja... Hm... igazgatónak talán még jó lennék. :)
Pontosan.
Verhás Péter ezt szépen összefoglalta:
"Ha eddig azt gondoltad, hogy a PASCAL a szépen és dokumentáltan programozható nyelv, és C-ben kegyetlenül olvashatatlan programokat lehet írni, akkor most értékeld át a dolgot: PASCAL-ban szépen formátumozott programokat lehet írni, C-ben olvashatatlan és Perl-ben kegyetlenül olvashatatlan programokat. Lehet. De nem kell."
- o -
Akinek pedig a programozás azt jelenti, hogy más forrásrészleteit nyúlja le, az vagy értse meg, amit ellop (és akkor akár át is hangszerelheti), vagy ha erre nem képes - a legnagyobb tisztelettel az író irányába - fogja be.
(Poli, ha esetleg magadra ismersz: direkt van.)
"Nem sok olyan (szamomra) undorito dolog van a programozasban, mint a regexek" - programozás fail.
Miért?
Tényleg undorítóak, ha mélyebben belemászol.
Most ne a [0-9a-z]+^$ típusúra gondolj, hanem pl. tagadásra és egyéb kedvességekre! ;) (nem jut eszembe, szerintem Zahy-t szórakoztattuk egy tanfolyamon valami lehetetlen regexp kifejezés létrehozásával, amiben az egyik lényeges feltétel volt, hogy bizonyos dolgokat nem volt szabad tartalmaznia a kiválasztott sornak)
Aki tudja, csinálja, aki nem tudja, tanítja... Hm... igazgatónak talán még jó lennék. :)
Egyszer össze kéne hasonlítani azt a kézzel írt kódot azzal a regexppel, ami az ember tetszését nem nyeri el. Direkt nem méretre, vagy fejlesztési időre, csak esztétikumra. Nem vagyok meggyőződve arról, hogy mindig a kifejtett kód volna a szépségkirálynő.
Viszont esélyes, hogy olvashatóbb lenne. ;)
Aki tudja, csinálja, aki nem tudja, tanítja... Hm... igazgatónak talán még jó lennék. :)
Biztos vagy abban, hogy egy ifekkel/switchekkel teletűzdelt többoldalas ciklusbanciklus/rekurzió, amely számos visszalépéssel van súlyosbítva feltétlenül olvashatóbb?
Hát a blr által itt alant beírtnál... Azt hiszem, igen. ;)
Aki tudja, csinálja, aki nem tudja, tanítja... Hm... igazgatónak talán még jó lennék. :)
Nem véletlen: ez éppen az a feladat, amire az RE értői és kedvelői is azt mondták, hogy erre ne.
De, lehet, eszembe jutott egy szebb (inkább csak rövidebb):
Bár itt már kérdéses, hogy melyik regexmotor fordítja jól, viszont kb. olvashatóan leírja a feladatot...
két számjegy; öt nem ismétlődő nagybetű vagy számjegy:
Múkodik :D
--
PtY - www.onlinedemo.hu
Mi az isten ez a ?=. A mintában a sor eleje, sor vége és az ismétlő dolgokat felismerem. A hanyatt-d és hanyatt-D-t perl-ből ismerem, bár az már se nem klasszikus, se nem extended regexp, hanem PCRE. De ez a ?= számomra kész. Milyen nyelvjárás ez?
Csángóra gondolnék első körben :-) (Rejtett +1)
--
A főnököm mindig megtartja amit ígér, ha pénzt ígér azt is!
man perlre
/Look-Around Assertions
"(?=pattern)"
A zero-width positive look-ahead assertion. For example,
"/\w+(?=\t)/" matches a word followed by a tab, without
including the tab in $&.
"(?!pattern)"
A zero-width negative look-ahead assertion. For example
"/foo(?!bar)/" matches any occurrence of "foo" that isn't
followed by "bar". Note however that look-ahead and
look-behind are NOT the same thing. You cannot use this
for look-behind.
(A ?! az első RE-s megoldásban szerepel.)
Igaz, ez tényleg jó, csak teljesen elszoktam az ismételt csoportdefiníciótól, mert az InDesign az első iterációnál beállítja, aztán úgy marad...
Nincs sok ertelme a ket vegletet (teljes ellenorzes egyetlen nagy regexp vs egylaltalan nem hasznalunk regexpet) osszehasonlitani szvsz. Nem-e lenne atlathatobb ha mindegyik kriteriumnak lenne kulon egy-egy fuggveny, pl. hasRepeatingLetters()?
----------------------
"ONE OF THESE DAYS I'M GOING TO CUT YOU INTO LITTLE PIECES!!!$E$%#$#%^*^"
--> YouTube csatornám
Ilyet ma is makrózhat bárki, de élek a gyanúperrel, hogy azon a bonyolultsági szinten, ahol az előnye kijönne, a terjengőssé válás miatt már hátrányba fordulna.
Viszont én nem próbáltam ki -- kíváncsi volnék a tapasztalatokra.
Ez nem szebb?
(De legalább rövidebb :)
Nezd, ha valaki utalja a halat, mondhatsz neki barmit, meg azt is, hogy ma mar letezik teljesen halszagtalan/haliztelen hal is, akkor sem fog egy darabot sem megkostolni belole. Ezt tapasztalatbol mondom.
Ugyanez all a regexre is.
--
+1
Pont most akartam szólni a topiknyitónak hogy ezt nem lehet megoldani lineáris időben és ne akarjon már egy n=5-ös sortot megspórolni ilyen áron, de ezekszerint csak a második tagmondatban volt igazam. Szerintem a sort majd rövid regex elhanyagolhatóval rosszabb csak futásidőben, és megéri az olvashatóságot.
+1, bár ha ügyesen csinálja, még sort sem kell.
(H)UP!
"Megmondtam, az Én scriptem hülyebiztos! Hülye biztos nem futtathatja!"
Ilyen csunyat irtam most:
--
HUP Firefox extension
"Három [A-Z] és két [0-9] bármilyen kombinációban"
Tehát neked 5 db alfanumerikus karaktered van? :)
\w{5}
-----------
"640GB sokmindenre elég"
Ha munkát keresel, akkor kezdd az elején: írj CV-t.
Van az úgy, hogy 0+5 =/= 1+4 =/= 2+3.
Sőt, azt is tudjuk, hogy 2*2 néha 5 :)
-----------
"640GB sokmindenre elég"
Ha munkát keresel, akkor kezdd az elején: írj CV-t.