A simple regex based exhaustive validator for PIN codes in India
Go to file
Nemo e1cb3c9054 [php] Ignore things for composer 2023-07-02 14:27:38 +05:30
bin Initial commit for rubygem 2020-04-26 08:58:11 +05:30
src [php] Get PHP functional 2023-07-02 14:21:35 +05:30
tests [php] Get PHP functional 2023-07-02 14:21:35 +05:30
.editorconfig Minor updates 2021-12-19 19:18:41 +05:30
.gitattributes [php] Ignore things for composer 2023-07-02 14:27:38 +05:30
.gitignore Lots of changes for v2 2023-07-01 20:00:02 +05:30
.npmignore [php] Get PHP functional 2023-07-02 14:21:35 +05:30
.travis.yml [ci/ruby] Adds travis builds for Ruby 2020-04-26 08:58:11 +05:30
CHANGELOG.md Minor updates 2021-12-19 19:18:41 +05:30
CODE_OF_CONDUCT.md [docs] Adds ruby in docs 2020-04-26 08:58:11 +05:30
Gemfile Don't commit Gemfile.lock 2020-04-26 08:58:11 +05:30
HACKING.md Lots of changes for v2 2023-07-01 20:00:02 +05:30
LICENSE Adds LICENSE and badges 2020-02-25 14:45:40 +05:30
README.md Lots of changes for v2 2023-07-01 20:00:02 +05:30
Rakefile [ruby] Adds test and code 2020-04-26 08:58:11 +05:30
composer.json [php] Ignore things for composer 2023-07-02 14:27:38 +05:30
package.json Lots of changes for v2 2023-07-01 20:00:02 +05:30
phpunit.xml Lots of changes for v2 2023-07-01 20:00:02 +05:30
pincode-regex.js Adds support for browser-usage using browserify 2020-04-21 21:09:50 +05:30
pincode-validator.gemspec Lots of changes for v2 2023-07-01 20:00:02 +05:30
pyproject.toml [python] WIP switch to pdm 2021-12-19 19:19:10 +05:30
regex.txt [php] Get PHP functional 2023-07-02 14:21:35 +05:30
regexes.txt [php] Get PHP functional 2023-07-02 14:21:35 +05:30

README.md

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.

Why?

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.

Source

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.

Usage

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.

PHP

The package is available on packagist.

To use the PHP package:

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

Node.js

The package is available on npm.

To use the package:

const P = require('pincode-validator');
P.validate('110011'); // returns true
P.search('my pincode is 560029'); // returns ['560029']

// or directly use the regex in your code
P.exactRegex.match('560029')
"address with pincode (560029)".matchAll(P.regex)

Ruby

Add this line to your application's Gemfile:

gem 'pincode_validator'

And then execute:

$ bundle

Or install it yourself as:

$ gem install pincode_validator

Browser

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>
<script>
Pincode.validate("560029"); // returns true
</script>

You can use githack for directly using this in your code: https://rawcdn.githack.com/captn3m0/india-pincode-regex/1.0.4/pincode-regex.js (Make sure you use the latest version). Please watch the 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.

Contributing

  • 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.

License

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