Newsgroup: it.comp.lang.javascript
Titolo: Espressioni Regolari

Saluto tutto il newsgroup.
Qualkuno sa dirmi se ci sono forti problemi di compatibilita con i browser
se  utilizzo nelle mie pagine web javascript che fanno uso di regular
expression?
Ringrazio anticipatamente coloro che mi risponderanno.

direi di no (ie>=3, netscape>=4)

 expression?
Opera, sicuramente ha dei problemi (almeno la 5 se non ricordo male..
supportava le RegExp ma in modo farlocco - come tutto Javascript del resto),
fu uno dei motivi che mi portarono a non supportare tale browser almeno
finche non si fosse *un minimo* messo in riga.
IE 4.0 (o meglo, Script Engine 3.0 e dintorni, sempre se nn canno versione)
non ha tutte le pattern, gli manca qualcosa.. Lo so per certo in quanto
espressioni regolari che funzionavano da dio, portate su un server NT4.0 con
IE4.0 e Script Engine 3.0, hanno incominciato a non funzionare e far casini.
In alcuni casi mi e' bastano cambiare la regexp, in altri cambiare
approccio. Finche' non e' stato possibile aggiornare lo script engine.
--------------------------------
Inviato via 
http://usenet.libero.it

 finche non si fosse *un minimo* messo in riga.
ah, ok...ma qua si parlava di browser... :-))

"kkk" <k@k.k> wrote in message news:z6yF9.7696$qF1.3...@news2.tin.it...

Come ti hanno già detto con IE e N non ci sono problemi.
e a proposito di espressioni regolari, io devo fare un controllo su un campo
provincia.
quindi 2 caratteri alfabetici.
uso questa espression : /^[A-Z a-z]{0,}$/
l'utente può inserire solo 2 caratteri perchè la textbox ha la maxlenght
impostata a 2
il mio problema si verifica quando un utente inserisce uno spazio,
l'espressione regolare lo accetta!!!
ho provato ad aggiungere anche \S  ma non cambia niente.
qualcuno ha un'idea?
grazie a tutti e ciao!!

 l'espressione regolare lo accetta!!!
Ci credo, se gli dici di includerlo tra il range di valori accettabili, lui
lo accetta :)
Ricordati che il computer e' fondamentalmente stupido. Non fa quel che vuoi
che faccia, ma quel che gli dici di fare.
/^[A-Za-z]{0,}$/
Pare cmq che {0,} non piaccia molto a NN7.0, inoltre cosi' facendo uno
potrebbe inserire benissimo una sola lettera come provincia.. ergo, ti
consiglio di cambiare la regexp almeno in:
/^[A-Za-z]{2}$/


cosa usi per testarla, test? qua non stai escludendo altri caratteri...
io farei al contrario: dichiarerei la regexp sui caratteri NON ammessi, poi
con test(stringa): se restituisce true allora č stato premuto un tasto non
valido.
Es. al volo (sperando la sintassi sia giusta, non so per quel ^ che esclude
A-Z-a-z e non ho la documentazione sotto mano):
 var r=/^[^A-Z^a-z]/;
 alert(r.test(String(document.forms['tuaform']['tuocampo'].value)));

Se non ho capito male lo usa con keyup-keydown-keypress etc, penso...per
questo la sua/tua soluzione non mi sembrava il massimo (premi un tasto, qua
ne cerchi 2 => errore)
Ma forse ho capito male e fa il controllo su onsubmit()?

 /^[A-Za-z]{2}$/
Ok! grazie


 alert(r.test(String(document.forms['tuaform']['tuocampo'].value)));
Se la sintassi e' riferita al check del valore nella sua totalita', cmq, non
ha senso. A questo punto e' preferibile continuare ad usare la precedente
regexp (senza il {2}).
In quanto true sta indicare il "via libera" mentre "false" no, esattamente
come accade nei vari return delle funzioni, *SOPRATTUTTO* se questo
controllo lo vuoi fare durante la pressione di un tasto (a quel punto va a
farsi friggere il check sul value perche' ancora il dato non e' stato
inserito, lo stai trappando prima).


 Se non ho capito male lo usa con keyup-keydown-keypress etc, penso...
Da come era impostata la cosa, avevo invece inteso che che era un check sul
value, non sul singolo tasto.
In quel caso l'approccio sarebbe un po' diverso.


 provincia.
Perchè non metti una select in questi casi?
--
"Non ti fare mai beffe di un drago vivo, pazzo di un Bilbo!"
m.vignocchiCHIOCCIOLAtiscalinetPUNTOit
Medusa

sì, era sulla totalità, quanto ho scritto non ha senso in questo caso

Uau grazie mille per le risposte :)

Grazie mille :)