2010-06-12 13 views
5

devo filtrare l'input dell'utente per sulla mia pagina ASP.NET Web:Qual è l'espressione RegEx corretta per i codici SWIFT?

<asp:TextBox runat="server" ID="recipientBankIDTextBox" MaxLength="11" /> 
<asp:RegularExpressionValidator runat="server" ValidationExpression="?" ControlToValidate="recipientBankIDTextBox" ErrorMessage="*" /> 

quanto è che io so codice SWIFT deve contenere 5 o 6 lettere e altri simboli fino a lunghezza totale 11 sono alfanumerico.

Come implementare correttamente tale regola?

risposta

18

Un codice rapido deve essere di 8 o 11 lettere o cifre in cui i primi sei devono essere lettere. Ma comunque non importa quello che è, ciò che conta è che capisci come creare una tale espressione. Ecco un'espressione regolare con annotazioni per mostrare cosa significano le parti.

 
^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$ 
    ^  ^  ^^ 
     |   |   | | 
     6 letters 2 letters 3 letters or digits 
        or digits  | 
           last three are optional 

Tutti gli esempi su Wikipedia mostrano solo lettere maiuscole A-Z. Se si desidera consentire anche lettere minuscole, modificare A-Z in A-Za-z. Vorrei controllare the ISO standard per vedere cosa dice, ma sfortunatamente non è libero di ottenere una copia.

2

Questo dovrebbe fare il trucco

^([a-zA-Z]){4}([a-zA-Z]){2}([0-9a-zA-Z]){2}([0-9a-zA-Z]{3})?$ 
+0

cosa perché ci sono due gruppi diversi - primo e secondo - con l'espressione uguale? Perché non solo '([a-zA-Z]) {6}'? – abatishchev

+1

Sì, hai ragione potresti farlo: lo divido in due gruppi solo sulla base del fatto che il primo gruppo appartiene alla banca e il secondo gruppo è il prefisso internazionale. ad esempio Natwest Bank, Regno Unito. 'NWBK' più' GB'. – codingbadger

Problemi correlati