2010-06-12 17 views
5

que tienen para filtrar la entrada del usuario a en mi página web ASP.NET:¿Cuál es la expresión RegEx adecuada para los códigos SWIFT?

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

En lo es que sé código SWIFT debe contener 5 o 6 letras y otros símbolos hasta longitud total 11 son alfanumérico.

¿Cómo implementar tal regla correctamente?

Respuesta

18

Un código SWIFT debe ser de 8 o de 11 letras o dígitos, donde los primeros seis deben ser letras. Pero de todos modos, realmente no importa lo que sea, lo que importa es que entiendas cómo crear esa expresión. Aquí hay una expresión regular con anotaciones para mostrarle lo que significan las partes.

 
^[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 

Todos los ejemplos en la Wikipedia muestran solo letras mayúsculas A-Z. Si también desea permitir letras minúsculas, cambie A-Z a A-Za-z. Verificaría the ISO standard para ver lo que dice, pero desafortunadamente no es gratis obtener una copia.

2

Esto debería hacer el truco

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

Para qué hay dos grupos diferentes - primer y segundo - con la igualdad de expresión? ¿Por qué no simplemente '([a-zA-Z]) {6}'? – abatishchev

+1

Sí, tiene la razón, podría hacerlo; lo divido en dos grupos simplemente sobre la base de que el primer grupo pertenece al banco y el segundo es el código del país. por ejemplo, para Natwest Bank, Reino Unido. 'NWBK' más' GB'. – codingbadger

Cuestiones relacionadas