Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    599

    Modificare una REGEX che accetti il VAT europeo (Partita IVA), eliminare il prefisso degli stati.

    Ciao a tutti,

    ho bisogno di una regex che accetti qualsiasi VAT europeo, sotto ho riportato una regex che funziona solo con il prefisso dello stato, avrei bisogno di eliminarlo, per capirci, se inserisco una partita iva italiana, con la regex sotto riportata, devo scrivere:
    IT123456789
    ...in modo che venga accettata.

    Mentre io vorrei che accettasse solo:
    123456789
    ...senza il prefisso IT e così per tutti gli stati!

    Grazie,
    Roberto

    Per le prove, questa pagina:
    https://regex101.com/r/xI0wO4/28

    codice:
    (?xi)^(
    (AT)?U[0-9]{8} |                              # Austria
    (BE)?0[0-9]{9} |                              # Belgium
    (BG)?[0-9]{9,10} |                            # Bulgaria
    (HR)?[0-9]{11} |                              # Croatia
    (CY)?[0-9]{8}L |                              # Cyprus
    (CZ)?[0-9]{8,10} |                            # Czech Republic
    (DE)?[0-9]{9} |                               # Germany
    (DK)?[0-9]{8} |                               # Denmark
    (EE)?[0-9]{9} |                               # Estonia
    (EL|GR)?[0-9]{9} |                            # Greece
    ES[A-Z][0-9]{7}(?:[0-9]|[A-Z]) |              # Spain
    (FI)?[0-9]{8} |                               # Finland
    (FR)?[0-9A-Z]{2}[0-9]{9} |                    # France
    (GB)?([0-9]{9}([0-9]{3})?|[A-Z]{2}[0-9]{3}) | # United Kingdom
    (HU)?[0-9]{8} |                               # Hungary
    (IE)?[0-9]S[0-9]{5}L |                        # Ireland
    (IT)?[0-9]{11} |                              # Italy
    (LT)?([0-9]{9}|[0-9]{12}) |                   # Lithuania
    (LU)?[0-9]{8} |                               # Luxembourg
    (LV)?[0-9]{11} |                              # Latvia
    (MT)?[0-9]{8} |                               # Malta
    (NL)?[0-9]{9}B[0-9]{2} |                      # Netherlands
    (PL)?[0-9]{10} |                              # Poland
    (PT)?[0-9]{9} |                               # Portugal
    (RO)?[0-9]{2,10} |                            # Romania
    (SE)?[0-9]{12} |                              # Sweden
    (SI)?[0-9]{8} |                               # Slovenia
    (SK)?[0-9]{10}                                # Slovakia
    )$



  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,129
    A me non sembra che nella regex che hai postato i prefissi degli stati siano obbligatori. Escluso quello spagnolo, direi.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    599
    Sì, in effetti hai ragione, mi stavo fissando principalmente con quello spagnolo e non mi rendevo conto:
    ho corretto in questo modo la linea e adesso funziona sia con il prefisso che senza:

    codice:
    (ES)?[A-Z][0-9]{7}(?:[0-9]|[A-Z]) |
    Grazie,
    Roberto
    Ultima modifica di robynosse; 17-12-2018 a 13:49

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    599
    Ho provato ad usare questa costante:
    codice:
     const VAT="/(?xi)^((AT)?U[0-9]{8}|(BE)?0[0-9]{9}|(BG)?[0-9]{9,10}|(HR)?[0-9]{11}|(CY)?[0-9]{8}L|(CZ)?[0-9]{8,10}|(DE)?[0-9]{9}|(DK)?[0-9]{8}|(EE)?[0-9]{9}|(EL|GR)?[0-9]{9}|(ES)?[A-Z][0-9]{7}(?:[0-9]|[A-Z])|(FI)?[0-9]{8} |(FR)?[0-9A-Z]{2}[0-9]{9}|(GB)?([0-9]{9}([0-9]{3})?|[A-Z]{2}[0-9]{3})|(HU)?[0-9]{8}|(IE)?[0-9]S[0-9]{5}L|(IT)?[0-9]{11}|(LT)?([0-9]{9}|[0-9]{12})|(LU)?[0-9]{8}|(LV)?[0-9]{11}|(MT)?[0-9]{8}|(NL)?[0-9]{9}B[0-9]{2}|(PL)?[0-9]{10}|(PT)?[0-9]{9}|(RO)?[0-9]{2,10}|(SE)?[0-9]{12}|(SI)?[0-9]{8}|(SK)?[0-9]{10})$/";
    C'e' qualcosa che sicuramente sbaglio all'inizio o alla fine, perche' da php non me la considera, e utilizzandola da javascript mi da SyntaxError: invalid regexp group.

    Se ad esempio utilizzo questa, che e' valida SOLO per la spagna, mi funziona sia da php che da javascript(ovviamente mi valida solo i VAT spagnoli):
    codice:
    const DNICIFNIE = "/^[XYZ]\d{7,8}[A-Z]$|^(\d{8})([A-Z])$|^([ABCDEFGHJKLMNPQRSUVW])(\d{7})([0-9A-J])$/";
    Inoltre come potrei fare a negare la const VAT, in modo che non mi validi tutto quello che NON E' un VAT?

    Grazie,
    Roberto
    Ultima modifica di robynosse; 17-12-2018 a 13:48

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    599
    Ho risolto cosi':

    codice:
    const VAT="/^((AT)?U[0-9]{8}|(BE)?0?[0-9]{9}|(BG)?[0-9]{9,10}|(CY)?[0-9]{8}L|(CZ)?[0-9]{8,10}|(DE)?[0-9]{9}|(DK)?[0-9]{8}|(EE)?[0-9]{9}|(EL|GR)?[0-9]{9}|(ES)?[0-9A-Z][0-9]{7}[0-9A-Z]|(FI)?[0-9]{8}|(FR)?[0-9A-Z]{2}[0-9]{9}|(GB)?([0-9]{9}([0-9]{3})?|[A-Z]{2}[0-9]{3})|(HU)?[0-9]{8}|(IE)?[0-9]S[0-9]{5}L|(IT)?[0-9]{11}|(LT)?([0-9]{9}|[0-9]{12})|(LU)?[0-9]{8}|(LV)?[0-9]{11}|(MT)?[0-9]{8}|(NL)?[0-9]{9}B[0-9]{2}|(PL)?[0-9]{10}|(PT)?[0-9]{9}|(RO)?[0-9]{2,10}|(SE)?[0-9]{12}|(SI)?[0-9]{8}|(SK)?[0-9]{10})$/";

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 © 2019 vBulletin Solutions, Inc. All rights reserved.