Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Espressione regolare...

    Salve.

    Scusate se rompo spesso ma ho bisogno di una espressione regolare sulla quale non sono molto ferrato.

    La cosa è molto semplice ed è simile ad Wikipedia.

    In pratica ho una variabile stringa che contiene del testo in HTML. All'iterno esistono dei "link" strutturati come [[parola]]

    Io devo sostituire ogni possibile occorrenza di [[parola]] con
    <div id="gap" association="parola"/>

    "Parola" può essere costituita dalla solita sequenza di valori alfanumerici (A..Z,a..z,0..9) e qualche carattere speciale (tipo _,-,+,- ecc...)

    Potete darmi una mano?

    Grazie e alla prossima...
    .:[Mr.Mime]:.

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    l'espression regolare è

    /\[{2}(.*?)\]{2}/

    e la variabile $1 contiene esattamente la parola che cerchi.

    Nota l'operatore *?: questo ti consente di rendere ungreedy l'operatore universale *
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Scusa la mia ignoranza, però come la applicato al mio caso?

    Nella mia esigenza non devo solo riconoscere [[parola]] ma anche sostituirla con una stringa che contiene parola.

    codice:
    Pippo è andato a [[G1]] a mangiare
    deve diventare

    codice:
    Pippo è andato a <div id="gap" identifier="G1"/> a mangiare
    Ho provato poi questa funzione semplice per testare la tua espressione regolare ma non sembra trovare il match:

    codice:
    var stringa = ' Ciao, voglio tanto [[G1]] e poi ancora [[G2]] ';
    
        function applica(str) {
           var reg = new RegExp('/\[{2}(.*?)\]{2}/', 'g');
            var sost = 'scopare';
            return (str.replace(reg, sost));
         }
    Grazie e alla prossima...
    .:[Mr.Mime]:.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Stai usando il metodo .replace in maniera non corretta.

    Il primo parametro di replace deve essere una stringa (contenente una regexp), non una oggetto tipo RegExp.

    Inoltre le barre dentro la regexp non sono corrette (devi togliere gli apici, oppure le barre).

    In conclusione prova questa sintassi:
    codice:
    function applica(str,sost) {
      return str.replace(/\[{2}(.*?)\]{2}/g, '<div id="gap" identifier="' + $1 + '"/>');
    }
    Nota che poi crei codice HTML errati: non ci possono essere due oggetti con lo stesso id in una stessa pagina - credo devi sostituire 'id=' con 'class='.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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.