A simple regex based exhaustive validator for PIN codes in India
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Go to file
Nemo 9105240bcb
Create FUNDING.yml
1 year ago
.github Create FUNDING.yml 1 year ago
bin Initial commit for rubygem 3 years ago
src [python] WIP switch to pdm 1 year ago
tests [python] WIP switch to pdm 1 year ago
.editorconfig Minor updates 1 year ago
.gitattributes Fix .gitattributes 3 years ago
.gitignore Minor updates 1 year ago
.npmignore Improve all ignore files 3 years ago
.travis.yml [ci/ruby] Adds travis builds for Ruby 3 years ago
CHANGELOG.md Minor updates 1 year ago
CODE_OF_CONDUCT.md [docs] Adds ruby in docs 3 years ago
Gemfile Don't commit Gemfile.lock 3 years ago
HACKING.md Minor updates 1 year ago
LICENSE Adds LICENSE and badges 3 years ago
README.md Adds language list 3 years ago
Rakefile [ruby] Adds test and code 3 years ago
composer.json Support phpunit 8.0 for php7.2 for now 3 years ago
package.json Version Bump (1.0.4) 3 years ago
phpunit.xml Initial commit 3 years ago
pincode-regex.js Adds support for browser-usage using browserify 3 years ago
pincode-validator.gemspec [docs] Adds ruby in docs 3 years ago
pyproject.toml [python] WIP switch to pdm 1 year ago
regex.txt Updates regex 3 years ago


india-pincode-regex Packagist Version Build Status npm GitHub package.json version GitHub

Validate a Postal Index Number for India with a few regexes and zero false-positives. The regexes are available in regex.txt. There is one regex per area code (the first digit of the PIN, which goes from 1-8). Available as a package for Ruby, Python, Node.js, and browsers.


A simple \d{6} approach marks a lot of invalid pincodes as valid. Out of the 900000 possible combinations, only approximately 155600 are valid pincodes in India. A simple example is 111111 which is an invalid pincode, but any simple 6 digit-check will pass it as a valid one. File a PR to support any other language.


The source for the data is the "All India Pincode Directory" dataset on data.gov.in. The last updated date for the dataset is currently 30th May 2019.


The regex.txt file is 32KB in size, so you can easily use it wherever you want, including browsers. If you are using any of the packages below, this is already delivered compressed.


The package is available on packagist.

To use the PHP package:

use PIN\Validator as P;
P::validate('110011'); // returns true;


The package is available on npm.

To use the package:

const P = require('pincode-validator');
P.validate('110011'); // returns true


Add this line to your application's Gemfile:

gem 'pincode_validator'

And then execute:

$ bundle

Or install it yourself as:

$ gem install pincode_validator


To use it in the browser, download the pincode-regex.js file and include it in your browser. Pincode is available as a Global variable.

<script src="../pincode-regex.js"></script>
Pincode.validate("560029"); // returns true

Since there is no hotline/CDN for this yet, please watch to repo to get notified of new releases.

Code of Conduct

Everyone interacting in the this projects codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.


  • See HACKING.md for some development details.
  • Pull requests are welcome for adding libraries in other languages (in the same repo).
  • This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.


Licensed under the MIT License. See LICENSE file for details.