Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Comportamenti ambigui per RegExp e /^...$/

    Devo testare una semplicissima regexp su una stringa che deve avere queste caratteristiche: "canc[1]" o 2 o 3...
    canc[] è obbligatorio.

    ho notato comportamenti diversi in base alle 2 sintassi /^...$/ e new RegExp()... la prima funziona... la seconda no...
    http://web.tiscali.it/mackey/prove/regexp.htm

    prima
    function sintaxCanc(nome) {
    return /^canc(\[(.*)\])$/.test(nome);
    }

    seconda
    function sintaxCanc(nome) {
    var reg = new RegExp("^canc(\[(.*)\])$");
    return reg.test(nome);
    }


    Il problema è che vorrei utilizzare la seconda... visto che al posto di (.*) vorrei mettere una variabile.

    La funzione risultante alla fine dovrebbe accettare come parametro la stringa e la variabile id.. e valutare se
    l'espressione è della forma "canc["+id+"(/qualsiasi_numero){1,2}]"

    Il problema è tutto nell'inclusione dell'id
    id può essere della forma "1", "1/1", "10", "123/23" etc...


    spero sappiate aiutarmi... ciao!!
    «Se leggi dimentichi, se vedi capisci, se fai impari» Piaget

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Le due sintassi da te proposte sono fondamentalmente la stessa, solo che la seconda e` formalmente corretta.

    Esiste un'altra sintassi che fa uso del metodo match oppure search degli oggetti string.

    In ogni modo non sono d'accordo con la tua RE: io userei una cosa di questo tipo:

    /^canc\[\d{1,2}\]$/

    le tonde non servono a meno che non vuoi estrarre il numero racchiuso dalle quadre.


    Non ho poi capito la storia del id che fai alla fine.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    le tonde le ho usate per racchiudere /numero perchè è quello che deve essere ripetuto 1 o 2 volte... e non solo un numero... ribadisco che il numero può essere anche di 1, 2, 3, 4,...,n cifre

    la questione dell'id è la seguente:
    passo un id alla funzione ad esempio "3";

    voglio che vengano presi in considerazione
    canc[3/2/2]
    canc[3/2]
    canc[3/10]
    canc[3/892/12]

    ma non ad esempio
    canc[2/8]
    canc[1/2]
    canc[5/10]

    capisci... l'id è il primo numero.. o la prima striga (per essere precisi)
    «Se leggi dimentichi, se vedi capisci, se fai impari» Piaget

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Forse ho capito.

    Che ne dici di questa?

    function sintaxCanc(nome,idd) {
    var reg = new RegExp("^canc\["+idd+"(\/\d+){1,2}\]$");
    return reg.test(nome);
    }


    Ciao
    Michele
    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 willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ciao Mackey,

    dici che passando 3 vuoi trovare
    canc[3]
    canc[3/2/2]
    canc[3/2]
    canc[3/10]
    canc[3/892/12]

    ma dopo il 3 cosa ci può essere dentro le parentesi quadre? Slash e numeri quanti ne vuoi?

  6. #6
    Originariamente inviato da willybit
    Ciao Mackey,

    dici che passando 3 vuoi trovare
    canc[3]
    canc[3/2/2]
    canc[3/2]
    canc[3/10]
    canc[3/892/12]

    ma dopo il 3 cosa ci può essere dentro le parentesi quadre? Slash e numeri quanti ne vuoi?
    no... una sequenza di 1 o 2 volte (/numero)


    Mich... non si discosta molto da quello che avevo fatto io... ma da errore di sintassi... è questo il problema!
    «Se leggi dimentichi, se vedi capisci, se fai impari» Piaget

  7. #7
    scusa... nn era errore tuo... era errore mio... cmq non funziona... mi restituisce false
    «Se leggi dimentichi, se vedi capisci, se fai impari» Piaget

  8. #8
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Originariamente inviato da Mich_
    Forse ho capito.

    Che ne dici di questa?

    function sintaxCanc(nome,idd) {
    var reg = new RegExp("^canc\["+idd+"(\/\d+){1,2}\]$");
    return reg.test(nome);
    }


    Ciao
    Michele
    adesso ho capito cosa cerchi Mackey!
    se devi individuare anche canc[3] nelle graffe ci va {0,2}
    poi devo fare una precisazione... se si usa la sintassi new RegExp passando una stringa che rappresenta la Regular Expression bisogna fare attenzione ai caratteri speciali
    codice:
    function sintaxCanc(stringa,idd) {
    	var reg = new RegExp("^canc\\["+idd+"(\\/\\d+){0,2}\\]$");
    	return reg.test(stringa)
    }

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Originariamente inviato da Mackey
    Mich... non si discosta molto da quello che avevo fatto io... ma da errore di sintassi... è questo il problema!
    Potrebbe non piacergli quella somma all'interno della definizione di reg: mettila fuori:

    function sintaxCanc(nome,idd) {
    var str = "^canc\\["+idd+"(\\/\\d\+){1,2}\\]$";
    var reg = new RegExp(str);
    return reg.test(nome);
    }

    Nota che ho usato idd come nome del parametro, perche` id e` parola riservata.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Willy,
    mi leggi nel pensiero o sono io che leggo il tuo?

    Ciao
    Michele
    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.