Visualizzazione dei risultati da 1 a 10 su 10

Discussione: regexp e variabili

  1. #1
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768

    regexp e variabili

    ciao a tutti

    come inserisco una variabile javascript in un' espressione regolare ?

    tipo

    mia_stringa = 'pippo';

    mio_tag = 'b';

    mia_stringa = mia_stringa.replace( /<mio_tag>pippo<\/mio_tag>/g, 'pippo' );

    devo ottenere:

    mia_stringa = 'pippo';

    :master:
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Se vuoi togliere tutti i tag da una stringa, la cosa e` semplice:
    codice:
    str = str.replace(/\<.+?\>/g,"");
    Se invece vuoi togliere solo i tag di un certo tipo (ad esempio [b] ):
    codice:
    str = str.replace(/\<\s*?b.*?\>/gi,"");
    Piu` complesso se vuoi passare il tag come parametro:
    codice:
    var par = "b";
    var re = new RegExp("\<\s*?" + par + ".*?\>", "gi");
    str = str.replace(re, "");
    Nota che questa sintassi potrebe non essere riconsociuta da alcuni browser
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    infatti ho dei problemi...

    esempio:

    ho del testo selezionato salvato nella variabile

    "selezionato"

    voglio verificare se a tale testo č appliacata una classe

    quindi faccio:

    var re = new RegExp("\<SPAN class=(.+)\>" + selezionato + "\</SPAN\>", "gi");


    stringa_modificata = stringa.replace( re, selezionato );

    ma non funziona, cioō non viene interpretata come espressione regolare la parte tra parentesi tonde

    (.+)

    ho provato con IE...

    ho fatto un errore nella sintassi oppure č IE con l'interpreta.

    eventualmente esiste una soluzione alternativa? Non so magari facendo 2 controlli separati
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    E` una cosa che avevo gia` notato:

    In effetti in qualche browser il replace vuole una stringa al suo interno, non una RegExp. Prova a modificare la riga in questo modo:
    var re = /\<\s*?" + par + ".*?\>/gi

    Non mettere il puntoevirgola alla fine della stringa.
    In questo modo potrebbe pero` ignorare il /gi

    Altrimenti occorre usare un metodo piu` complesso; se serve fammelo spare che ci penso (al momento non so neppure se si puo` realizzare)


    PS. il tutto presuppone che nel parametro non ci siano caratteri speciali: sono ammessi solo caratteri alfanumerici.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    non va...

    stringa = "pasta <SPAN class=Stile_blu>alla</SPAN> carbonara";

    var re = /\<\s*?" + selezionato + ".*?\>/gi

    stringa_modificata = stringa.replace( re, selezionato );



    io dovrei ottener:

    pasta alla carbonara (ho selezionato alla)





    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    La mia RegExp era per eliminare un particolare TAG, non per quanto contenuto dentro il tag.
    Vedi quest'altra RegExp:

    var re = /\<\s*?.?\>\s*?(" + selezionato + ")\s*?\<.*?\>/gi

    da usare con:

    stringa_modificata = stringa.replace( re, "$1");

    Il $1 sta per: quanto contenuto dentro la (prima) parentesi tonda.

    PS: fatti anche un alert contenente la stringa re, e controlla che sia una RegExp valida
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    grazie, ora provo
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  8. #8
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    non riesco
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  9. #9
    io non ho ancora capito bene ... vuoi togliere i tag ad una determinata parola solo se ha come attributo una classe? cmq io ho provato cosė:
    codice:
    var selezionato = "alla";
    
    var s = "pasta <SPAN class=Stile_blu>alla</SPAN> carbonara"; 
    
    var re = "<([a-z]*)\\s+class=[a-z_]+>"+selezionato+"</\\1>";
    
    reg = new RegExp(re, "gi");
    
    stringa_modificata = s.replace( reg, selezionato ); 
    
    alert(stringa_modificata);
    ovviamente č molto rigida...ma non so se č quello che volevi
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  10. #10
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768


    funziona perfettamente, il problema era che non riuscivo a far interpretare all'espressione regolare il valore della variabile "selezionato"

    grazie AnĒkin per l'ottima soluzione.

    ora perō ho scoperto che c'č un altro problema


    in pratica se io ho:

    var s = "pasta <SPAN class=Stile_blu>alla</SPAN> carbonara e <SPAN class=Stile_giallo>alla</span> puttanesca";

    lo script mi corregge entrambe le "alla", ma io ne ho selezionato uno solo.

    sapete come ottenere la posizione (numerica) della parola selezionata nell'iframe.
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.