How to check the validation of edittext for pan card like "ABCDE1234F". I am confused how to check the the validation for this. Please help me guys. I will appreciate any kind of help.
问题:
回答1:
You can use Regular Expression with pattern matching
String s = "ABCDE1234F"; // get your editext value here
Pattern pattern = Pattern.compile("[A-Z]{5}[0-9]{4}[A-Z]{1}");
Matcher matcher = pattern.matcher(s);
// Check if pattern matches
if (matcher.matches()) {
Log.i("Matching","Yes");
}
[A-Z]{5} - match five literals which can be A to Z
[0-9]{4} - followed by 4 numbers 0 to 9
[A-Z]{1} - followed by one literal which can A to Z
You can test regex @
http://java-regex-tester.appspot.com/
http://docs.oracle.com/javase/tutorial/essential/regex/
回答2:
@Raghunandan is right. You can use regex. If you see wiki entry for Permanent_account_number(India) you'll get the meaning of the PAN card number formation. You can use the pattern to check for its validity. Relevant portion is as follows:
PAN structure is as follows: AAAAA9999A: First five characters are letters, next 4 numerals, last character letter.
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.
`
Hope this helps.
回答3:
pan card validation
regex : /(^([a-zA-Z]{5})([0-9]{4})([a-zA-Z]{1})$)/
回答4:
You can use Key press Event for PAN Card Validation in C#
enter code here
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
int sLength = textBox1.SelectionStart;
switch (sLength)
{
case 0:
case 1:
case 2:
case 3:
case 4:
if (char.IsLetter(e.KeyChar) || Char.IsControl(e.KeyChar))
{
e.Handled = false;
}
else
{
e.Handled = true;
}
break;
case 5:
case 6:
case 7:
case 8:
if (char.IsNumber(e.KeyChar) || Char.IsControl(e.KeyChar))
{
e.Handled = false;
}
else
{
e.Handled = true;
}
break;
case 9:
if (char.IsLetter(e.KeyChar) || Char.IsControl(e.KeyChar))
{
e.Handled = false;
}
else
{
if (Char.IsControl(e.KeyChar))
{
e.Handled = false;
}
else
{
e.Handled = true;
}
}
break;
default:
if (Char.IsControl(e.KeyChar))
{
e.Handled = false;
}
else
{
e.Handled = true;
}
break;
}
}
回答5:
^([a-zA-Z]){5}([0-9]){4}([a-zA-Z]){1}?$/
Try This, hope will work
回答6:
Regular Exp of PANCARD- '/[A-Z]{5}\d{4}[A-Z]{1}/i';
use the following if you use angular js
Controller
$scope.panCardRegex = '/[A-Z]{5}\d{4}[A-Z]{1}/i';
HTML
<input type="text" ng-model="abc" ng-pattern="panCardRegex" />
回答7:
Validating proper format should be done by this regex:
/^[A-Z]{3}[ABCFGHLJPT][A-Z][0-9]{4}[A-Z]$/
The difference from other answers is that this one takes into account that fourth letter can only take certain values. The whole regex can easily be changed to be case insensitive.
On the other hand this check is too generic and a proper validation formula for the last check letter would be much better than only checking which position has a digit or letter. Alas this formula seems not to be public.
回答8:
Try this one
$(document).ready(function() {
$.validator.addMethod("pan", function(value1, element1) {
var pan_value = value1.toUpperCase();
var reg = /^[a-zA-Z]{3}[PCHFATBLJG]{1}[a-zA-Z]{1}[0-9]{4}[a-zA-Z]{1}$/;
var pan = {
C: "Company",
P: "Personal",
H: "Hindu Undivided Family (HUF)",
F: "Firm",
A: "Association of Persons (AOP)",
T: "AOP (Trust)",
B: "Body of Individuals (BOI)",
L: "Local Authority",
J: "Artificial Juridical Person",
G: "Govt"
};
pan = pan[pan_value[3]];
if (this.optional(element1)) {
return true;
}
if (pan_value.match(reg)) {
return true;
} else {
return false;
}
}, "Please specify a valid PAN Number");
$('#myform').validate({ // initialize the plugin
rules: {
pan: {
required: true,
pan: true
}
},
submitHandler: function(form) {
alert('valid form submitted');
return false;
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.js"></script>
<form id="myform" action="" method="post">
<div>
<label>Pan Number</label>
<div>
<input type="text" name="pan" value="" id="input-pan" />
</div>
</div>
<button type="submit">Register</button>
</form>
回答9:
Hi for pan card verification you need to execute two step process in your project.
1.) create a form and get user pan card number
2.) upload user pan card image
After complete both step make a logic in backend for verification. For this you can follow below tutorial:
https://www.lelocode.com/posts/pan-verification-in-laravel-using-baidu-ocr-universal-text-recognition-%28high-precision-version%29
回答10:
As per Income Tax Act, the guidelines for PAN Card are as follows:
Format For Pan Card : Eg. ABCDE0123F
Income Tax PAN card is issued under Section 139A of the Income Tax Act. The PAN structure is as follows: AAAPL1234C: The five (5) first characters are letters, followed by four (4) numerals, and the last (10th) character is a letter. The fourth (4th) character informs about the holder of the card.
For more Information regarding Pan card : https://en.m.wikipedia.org/wiki/Permanent_account_number
For Code Validation : "[A-Z]{5}[0-9]{4}[A-Z]{1}"
For Java :
public static boolean isPanCardValid(String pan_number) {
Pattern pattern = Pattern.compile("[A-Z]{5}[0-9]{4}[A-Z]{1}");
Matcher matcher = pattern.matcher(pan_number);
// Check if pattern matches
if (matcher.matches()) {
return true;
} else {
return false;
}
}
where isPanCardValid() is static method, which accepts string as parameter(String pan_number) input from User and matches with PanCard Pattern and returns the value as true or false.
回答11:
Note that none of other answers available so far doesn't verify PAN check digit.
Here is Luhn algorythm from http://rosettacode.org/wiki/Luhn_test_of_credit_card_numbers#Java:
public static boolean luhnTest(String number){
int s1 = 0, s2 = 0;
String reverse = new StringBuffer(number).reverse().toString();
for(int i = 0 ;i < reverse.length();i++){
int digit = Character.digit(reverse.charAt(i), 10);
if(i % 2 == 0){//this is for odd digits, they are 1-indexed in the algorithm
s1 += digit;
}else{//add 2 * digit for 0-4, add 2 * digit - 9 for 5-9
s2 += 2 * digit;
if(digit >= 5){
s2 -= 9;
}
}
}
return (s1 + s2) % 10 == 0;
}
回答12:
Very simple using simple concept.
long l = System.currentTimeMillis();
String s = l + "";
String s2 = "";
System.out.println(s.length());
for (int i = s.length() - 1; i > 8; i--) {
s2+=s.charAt(i);
}
String pancardNo = "AVIPJ" + s2 + "K";
System.out.println(pancardNo);
Use this unique pancard no for testing purpose .