Expression régulière validant le numéro de carte PAN

J'ai vu cette question et ce blog pour le PAN regex. [AZ]{5}[0-9]{4}[AZ]{1} . Mais ma question est un peu plus étendue que cela.

Dans un numéro de carte PAN:

  • Comment modifier ou créer une page d'erreur personnalisée pour WebView?
  • Android Bitmap: Convertir des pixels transparents en une couleur
  • Partager des cookies entre webview et chrome
  • Radiogroupe Android, diviseur entre radio boutons
  • Comment cliquer ou toucher sur un texte TextView sur différents mots?
  • Changement de taille de texte dynamique selon la tablette
  •  1) The first three letters are sequence of alphabets from AAA to zzz 2) The fourth character informs about the type of holder of the Card. Each assesse is unique:` C — Company P — Person H — HUF(Hindu Undivided Family) F — Firm A — Association of Persons (AOP) T — AOP (Trust) B — Body of Individuals (BOI) L — Local Authority J — Artificial Judicial Person G — Government 3) The fifth character of the PAN is the first character (a) of the surname / last name of the person, in the case of a "Personal" PAN card, where the fourth character is "P" or (b) of the name of the Entity/ Trust/ Society/ Organisation in the case of Company/ HUF/ Firm/ AOP/ BOI/ Local Authority/ Artificial Jurdical Person/ Govt, where the fourth character is "C","H","F","A","T","B","L","J","G". 4) The last character is a alphabetic check digit. 

    Je veux que le regex vérifie sur la base de cela. Puisque je reçois le nom de la personne ou l'Organisation dans un autre EditText, j'ai dû vérifier davantage la 4ème et la 5ème lettre.

    Il s'avère que [AZ]{3}[C,H,F,A,T,B,L,J,G,P]{1}**something for the fifth character**[0-9]{4}[AZ]{1}

    Je ne peux pas comprendre comment quelque chose doit être écrit.

    Par programme, cela peut être fait, quelqu'un l'a fait dans les rails, mais peut-il être fait par regex? Comment?

  • Pouvez-vous utiliser le même OnClickListener pour différents boutons?
  • NotImplementedException sur Android
  • Android OpenGL Transparent Texture Draws Black
  • Google Map v2 ou v3?
  • Android thread stime, utime?
  • AsyncTask Threading Rule - Peut-on vraiment être utilisé une seule fois?
  • 2 Solutions collect form web for “Expression régulière validant le numéro de carte PAN”

    Le regex que vous pouvez utiliser avec les matches() est formé en fonction de l'entrée supplémentaire des utilisateurs, et regardez-derrière vérifiez le 4ème caractère précédent. Si la 4ème lettre est P , nous vérifions la première lettre du nom de famille, et si la 4ème lettre n'est pas P , nous vérifions la première lettre dans le nom de l'entité:

     String rx = "[AZ]{3}([CHFATBLJGP])(?:(?<=P)" + c1 + "|(?<!P)" + c2 + ")[0-9]{4}[AZ]"; 

    Exemple de code :

     String c1 = "S"; // First letter in surname coming from the EditText (with P before) String c2 = "F"; // First letter in name coming from another EditText (not with P before) String pan = "AWSPS1234Z"; // true System.out.println(pan.matches("[AZ]{3}([CHFATBLJGP])(?:(?<=P)" + c1 + "|(?<!P)" + c2 + ")[0-9]{4}[AZ]")); pan = "AWSCF1234Z"; // true System.out.println(pan.matches("[AZ]{3}([CHFATBLJGP])(?:(?<=P)" + c1 + "|(?<!P)" + c2 + ")[0-9]{4}[AZ]")); pan = "AWSCS1234Z"; // false System.out.println(pan.matches("[AZ]{3}([CHFATBLJGP])(?:(?<=P)" + c1 + "|(?<!P)" + c2 + ")[0-9]{4}[AZ]")); 

    Entrez la description de l'image ici

     Pan= edittextPan.getText().toString().trim(); Pattern pattern = Pattern.compile("[AZ]{5}[0-9]{4}[AZ]{1}"); Matcher matcher = pattern .matcher(Pan); if (matcher .matches()) { Toast.makeText(getApplicationContext(), Pan+" is Matching", Toast.LENGTH_LONG).show(); } else { Toast.makeText(getApplicationContext(), Pan+" is Not Matching", Toast.LENGTH_LONG).show(); } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.