JavaScript & Reqular Expression problem..

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

JavaScript & Reqular Expression problem..

Δημοσίευση από panosru » 13 Φεβ 2007 12:10

Paidia, epidi mou exei spasei ta neyra edo kati, exo ayton ton kodika...

Κώδικας: Επιλογή όλων

var str = xmlHttp.responseText.replace&#40;/&#40;.*&#41;&#40;<!-- MODULE78 -->.*<!-- EO MODULE78 -->&#41;&#40;.*&#41;/g, "$2"&#41;;
To xmlHttp.responseText einai html kodikas, se kapoia shmeia exo ena comment <!-- MODULE78 --> kai se ena allo <!-- EO MODULE78 --> kai thelo na paro ta periexomena tou mazi me ta comments, to phga me thn replace spazontas se 3 meroi to eggrafo,

1) oti yparxei prin to arxiko comment
2) ta comments kai to periexomeno tous
3) oti yparxei meta to arxiko comment

Sthn ousia diladi kanei match olo to eggrafo (toulaxiston ayto tha hthela :P) kai ephga to kano replace mono me to 2o komati, diladi ta comments me to periexomeno tous, ayto fysiologika den eprepe na douleyei? to problhma einai oti sto alert bgazei olo to html kodika apo thn arxh eos to telos, dokimasa kai me match kai na trabao px alert(str[1]); kai na perno to 2o komati alla epistrefei null :/ dokimasa to regular expression me php kai douleyei mia xara to thema einai pos prepei na graftei se javascript, se ena google searching diabasa pos h mhxanh ton reqular expressions ths javascript den anagnorizei ta new lines me thn teleia.. Sigkekrimena egrafe..
JavaScript has no "dot matches newlines" option.
Exei kaneis kamia idea?

EDIT:
Dokimasa kai to parakato alla kai ayto mou epistrefei timi null...

Κώδικας: Επιλογή όλων

var result = null;
var myregexp = /<!-- MODULE78 -->.*<!-- EO MODULE78 -->/img;
var matches = myregexp.exec&#40;xmlHttp.responseText&#41;;
if &#40;matches != null&#41; 
&#123;
	result = matches&#91;1&#93;;
&#125;				

alert&#40;result&#41;;

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

JavaScript & Reqular Expression problem..

Δημοσίευση από skeftomilos » 13 Φεβ 2007 13:21

αντί για .* δοκίμασε [\s\S]* :)
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

JavaScript & Reqular Expression problem..

Δημοσίευση από panosru » 13 Φεβ 2007 13:27

exo prospathisei kai etsi alla kanei ksana ta idia... pali epistrefei olo to eggrafo.. :(

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

JavaScript & Reqular Expression problem..

Δημοσίευση από panosru » 13 Φεβ 2007 13:36

loipon to pos kai giati den to ksero :P alla allaksa to regexp mou opos mou eipes kai mou ekane oti ekane kai me to .* ypo to /g (global) eno to \s\S douleyei kai xoris to global, nice.. telika omos h basikh patata htan sto oti to phgaina me lathos tropo... ekana match olo to eggrafo kai replace mono me to part 2 den tha katso na to psakso giati den douleypse, den exo xrono tora :P alla to parakato doulepse yperoxa! Thanks skeftomile!

Κώδικας: Επιλογή όλων

var myregexp = /&#40;<!-- MODULE78 -->&#91;\S\s&#93;*<!-- EO MODULE78 -->&#41;/;
var matches = myregexp.exec&#40;xmlHttp.responseText&#41;;
if &#40;matches != null&#41; 
&#123;
	result = matches&#91;1&#93;;
&#125;

alert&#40;result&#41;;

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

JavaScript & Reqular Expression problem..

Δημοσίευση από skeftomilos » 13 Φεβ 2007 13:54

Με μια γραμμή:

Κώδικας: Επιλογή όλων

var result = xmlHttp.responseText.match&#40;/&#40;<!-- MODULE78 -->&#91;\S\s&#93;*<!-- EO MODULE78 -->&#41;/&#41; ? RegExp.$1 &#58; ''
Πάνο αν μου επιτρέπεις οι AJAX τεχνικές σου χωράνε λίγη βελτίωση. Δεν είναι πράγματα αυτά να κατεβαίνει κοτζάμ σελίδα για να πάρουμε ένα κομματάκι! :-)
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

JavaScript & Reqular Expression problem..

Δημοσίευση από panosru » 13 Φεβ 2007 14:39

mia diorthosh, sto οι AJAX τεχνικές σου kane ena replace to sou se tous ;) douleyo pano se mia MA....IA kai ta neyra mou den einai poly kala me tous senior programmers :lol: pou emplaiksa

btw to short typing tou if to xrhshmopoio synithos otan xreiazomai kapou hte 0 hte 1 enoo dld hte ena x apotelesma hte ena y an einai na mhn exei else synithos grafo ena monokomato if xoris aggyles dld

Κώδικας: Επιλογή όλων

if &#40;xmlHttp.responseText.match&#40;/&#40;<!-- MODULE78 -->&#91;\S\s&#93;*<!-- EO MODULE78 -->&#41;/&#41;&#41; var result = RegExp.$1;
thanks pantos ;)

theodark
Δημοσιεύσεις: 84
Εγγραφή: 15 Οκτ 2006 02:21
Τοποθεσία: Αθήνα

JavaScript & Reqular Expression problem..

Δημοσίευση από theodark » 13 Φεβ 2007 20:00

Mipos sou kanei to

Κώδικας: Επιλογή όλων

	var str = xmlHttp.responseText.replace&#40; /.*?&#40;&#40;\<\!-- MODULE78 --\>&#41;.*?&#40;\<\!-- EO MODULE78 --\>&#41;&#41;.*/ , "$1"&#41;;
logika prepei na doulevei kai me g :)

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

JavaScript & Reqular Expression problem..

Δημοσίευση από panosru » 13 Φεβ 2007 20:48

thanks 4 trying tora eimai spiti den eimai sto grafeio opote den ksero na sou po ama douleyei alla afou bghke to project tora asto na paei sto kalo to sixathika! xaxaxaxa

thanks pantos ;)

PS: den xreiazete na kaneis ecape ta < kai ta !, episeis to problhma htan kai sthn teleia ( . ) pou den thn anagnorize h mhxanh ton regexp ths JavaScript os new line charachter kai meta h patata htan dikh mou pou to phgaina me lathos tropo.. anti na kano match me thn mia ayta pou thelo.. phgaina kai ekana replaces anousia pou sthn telikh den douleyan ki' olas :lol:

theodark
Δημοσιεύσεις: 84
Εγγραφή: 15 Οκτ 2006 02:21
Τοποθεσία: Αθήνα

JavaScript & Reqular Expression problem..

Δημοσίευση από theodark » 13 Φεβ 2007 23:03

LOL oxi asto! min to dokimaseis.... den mou paikse se multiline (\r\n).

Nomiza oti h teleia symperilamvanei ta newlines by default! :-? tou evala kai /.../m alla pali tpt... Sorry...

P.S.: Ta escapes mou emeinan epeidi piga na dokimaso an borouse na ginei lookahead / lookbehind opos stin php / perl.

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

JavaScript & Reqular Expression problem..

Δημοσίευση από panosru » 13 Φεβ 2007 23:53

basika kai go perimena na doulepsei h teleia logo tou oti douleyei sthn php alla meta eida pos douleyei etsi sthn javascript kai dokimasa \s\S eida pos oute etsi eixa to apotelesma pou hthela kai to gyrisa ksana sthn teleia anyway telika afou lythike to thema eimai ok :P

PS: Den arxise kala h ebdomada genika :P einai poly spastiko na perneis misoteleiomena projects allon pou einai kai buggy kai xalia gramena :P den to eyxomai se kanenan...!!

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

JavaScript & Reqular Expression problem..

Δημοσίευση από skeftomilos » 14 Φεβ 2007 00:53

Το non-greedy matching .*? προκαλεί άσχημα parsing errors στον IE5 (αν και μικρή σημασία έχει αυτό πια).
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

JavaScript & Reqular Expression problem..

Δημοσίευση από panosru » 14 Φεβ 2007 09:29

thanks 4 the tip ;) alla poios einai me ie5 poia... edo se ligo den tha exoun ie6 (an kai gia thn ellada den to pisteyo ayto.. malon tha epikrathsei o ie6 mias kai den exoun oloi gnhsia windows gia na baloun ton 7... :P alla tora mhn to trabhksoume ekei to thema xaxaxa tha mas parei ta kefalia o Mr. Administratoras)

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

JavaScript & Reqular Expression problem..

Δημοσίευση από skeftomilos » 14 Φεβ 2007 11:33

IE5 = Windows 98 SE. Ελάχιστοι τα έχουν πια, αλλά επειδή το συγκεκριμένο error είναι πολύ άσχημο (δεν είναι απλό run-time error αλλά syntax error) προτιμώ να αποφεύγω εντελώς το non-greedy matching στις web σελίδες. Συνήθως υπάρχει απλό workaround. Π.χ. το <textarea.*?> μπορεί να γίνει <textarea[^>]*>
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

theodark
Δημοσιεύσεις: 84
Εγγραφή: 15 Οκτ 2006 02:21
Τοποθεσία: Αθήνα

JavaScript & Reqular Expression problem..

Δημοσίευση από theodark » 14 Φεβ 2007 22:44

Symfonoi an milame gia enan xaraktira skefromyle. Egine me non greedy epeidi to match itan gia string.

Tora oson afora to syntax error ston IE5 ... Microsoft! Den nomizo oti yparxei kati allo na poume. Genika mexri tin .NET genia ta regex itan foveri komodia (kai sto .NET den milao epeidi den to xo psaksei ektenos)...

Tora pou to skeftomai borei na epeze to [.\r\n]*?

Tespa afou to project sou einai ok panosru no worries! Brain storming na ginetai :D

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

JavaScript & Reqular Expression problem..

Δημοσίευση από panosru » 15 Φεβ 2007 09:38

xexe etsi etsi :P

Project tous, eipame! exoume polous Senior Programmers sthn ellada... tromara tous! :lol:

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 3 επισκέπτες