@innostes/validators
Version:
A collection of utility functions to validate commonly used Indian documents and data formats such as mobile numbers, PAN, Aadhar, GSTIN, IFSC, and more. This package provides regular expression-based validators for accurate and quick input validation.
383 lines (312 loc) • 14.3 kB
Markdown
A comprehensive collection of utility functions to validate common Indian documents, data formats, and other general validations. This package provides regular expression-based validators for accurate and quick input validation in your JavaScript or TypeScript projects.
- **Indian-specific validators**:
- Mobile Number
- PAN (Permanent Account Number)
- Aadhar Number
- GSTIN (Goods and Services Tax Identification Number)
- IFSC (Indian Financial System Code)
- Voter ID
- PIN Code
- **General validators**:
- Email Address
- URL
- Strong Password
- Alphanumeric String
- Numeric String
- Alpha String (with or without spaces)
- Phone Number
## Installation
You can install the package from npm by running:
```bash
npm install @innostes/validators
```
## Usage
Once the package is installed, you can import and use the validators in your project.
### Example of using validators
```typescript
import {
validateEmail,
validateURL,
validateStrongPassword,
validateAlphaNumeric,
validateAlphaWithSpace,
validateNumeric,
validateAlphaNumericWithSpecialChars,
validateAlphaNumericWithSpace,
validateAlphabets,
validatePhoneNumber,
validateIndianMobileNumber,
validatePAN,
validateAadhar,
validatePINCode,
validateGSTIN,
validateIFSCCode,
validateVoterID
} from '@innostes/validators';
// Example: Validating Email
const email = 'user@example.com';
console.log(validateEmail(email)); // true
// Example: Validating URL
const url = 'https://example.com';
console.log(validateURL(url)); // true
// Example: Validating Strong Password
const password = 'P@ssw0rd123';
console.log(validateStrongPassword(password)); // true
// Example: Validating Alphanumeric String
const alphanumeric = 'Hello123';
console.log(validateAlphaNumeric(alphanumeric)); // true
// Example: Validating Indian Mobile Number
const mobileNumber = '9876543210';
console.log(validateIndianMobileNumber(mobileNumber)); // true
// Example: Validating PAN
const pan = 'ABCDE1234F';
console.log(validatePAN(pan)); // true
// Example: Validating Aadhar
const aadhar = '234567890123';
console.log(validateAadhar(aadhar)); // true
// Example: Validating PIN Code
const pinCode = '110001';
console.log(validatePINCode(pinCode)); // true
// Example: Validating GSTIN
const gstin = '27ABCDE1234F1Z5';
console.log(validateGSTIN(gstin)); // true
// Example: Validating IFSC Code
const ifscCode = 'SBIN0001234';
console.log(validateIFSCCode(ifscCode)); // true
// Example: Validating Voter ID
const voterID = 'ABC1234567X';
console.log(validateVoterID(voterID)); // true
```
Validates an email address to ensure it follows the standard email format.
- **Parameters**:
- `email` (string): The email address to validate.
- **Returns**:
- `boolean`: `true` if the email is valid, `false` otherwise.
- **Example**:
```typescript
validateEmail('user@example.com'); // true
Validates a URL, supporting both `http` and `https` protocols.
- **Parameters**:
- `url` (string): The URL to validate.
- **Returns**:
- `boolean`: `true` if the URL is valid, `false` otherwise.
- **Example**:
```typescript
validateURL('https://example.com'); // true
validateURL('ftp://example.com'); // false
validateURL('http://example.com'); // true
Validates a strong password, requiring at least 8 characters with one uppercase letter, one lowercase letter, one digit, and one special character.
- **Parameters**:
- `password` (string): The password to validate.
- **Returns**:
- `boolean`: `true` if the password is strong, `false` otherwise.
- **Example**:
```typescript
validateStrongPassword('P@ssw0rd123'); // true
validateStrongPassword('password123'); // false
validateStrongPassword('P@ssword'); // false
validateStrongPassword('P@ssw0rd'); // true
Validates if the string contains only alphanumeric characters (letters and numbers).
- **Parameters**:
- `value` (string): The string to validate.
- **Returns**:
- `boolean`: `true` if the string is alphanumeric, `false` otherwise.
- **Example**:
```typescript
validateAlphaNumeric('Hello123'); // true
validateAlphaNumeric('Hello 123'); // false
validateAlphaNumeric('12345'); // true
validateAlphaNumeric('Hello!'); // false
Validates if the string contains only alphabetic characters and spaces.
- **Parameters**:
- `value` (string): The string to validate.
- **Returns**:
- `boolean`: `true` if the string contains only alphabets and spaces, `false` otherwise.
- **Example**:
```typescript
validateAlphaWithSpace('Hello World'); // true
validateAlphaWithSpace('Hello123'); // false
validateAlphaWithSpace('Hello World!'); // false
validateAlphaWithSpace('Hello'); // true
Validates if the string contains only numeric characters (digits).
- **Parameters**:
- `value` (string): The string to validate.
- **Returns**:
- `boolean`: `true` if the string is numeric, `false` otherwise.
- **Example**:
```typescript
validateNumeric('12345'); // true
validateNumeric('123 45'); // false
validateNumeric('abc123'); // false
validateNumeric('987654'); // true
Validates if the string contains only alphanumeric characters and special characters like underscore, hyphen, and period.
- **Parameters**:
- `value` (string): The string to validate.
- **Returns**:
- `boolean`: `true` if the string contains only alphanumeric characters and allowed special characters (`_`, `-`, `.`), `false` otherwise.
- **Example**:
```typescript
validateAlphaNumericWithSpecialChars('Hello_123'); // true
validateAlphaNumericWithSpecialChars('Hello-123.World'); // true
validateAlphaNumericWithSpecialChars('Hello@123'); // false
validateAlphaNumericWithSpecialChars('Hello 123'); // false
Validates if the string contains only alphanumeric characters and spaces.
- **Parameters**:
- `value` (string): The string to validate.
- **Returns**:
- `boolean`: `true` if the string contains only alphanumeric characters and spaces, `false` otherwise.
- **Example**:
```typescript
validateAlphaNumericWithSpace('Hello 123'); // true
validateAlphaNumericWithSpace('Hello_123'); // false
validateAlphaNumericWithSpace('12345'); // true
validateAlphaNumericWithSpace('Hello World!'); // false
Validates if the string contains only alphabetic characters (no spaces, no digits, no special characters).
- **Parameters**:
- `value` (string): The string to validate.
- **Returns**:
- `boolean`: `true` if the string contains only alphabetic characters, `false` otherwise.
- **Example**:
```typescript
validateAlphabets('Hello'); // true
validateAlphabets('Hello123'); // false
validateAlphabets('Hello World'); // false
validateAlphabets('Hello!'); // false
Validates a phone number. It can include an optional international prefix, followed by numbers and possible spaces or hyphens.
- **Parameters**:
- `phone` (string): The phone number to validate.
- **Returns**:
- `boolean`: `true` if the phone number is valid, `false` otherwise.
- **Example**:
```typescript
validatePhoneNumber('+1 123-456-7890'); // true
validatePhoneNumber('123-456-7890'); // true
validatePhoneNumber('1234567890'); // true
validatePhoneNumber('123-45-6789'); // true
validatePhoneNumber('123 45 6789'); // true
validatePhoneNumber('123 45-67890'); // false
validatePhoneNumber('123abc4567'); // false
Validates an Indian mobile number. The number should begin with a digit between 7 and 9, followed by 9 digits.
- **Parameters**:
- `number` (string): The mobile number to validate.
- **Returns**:
- `boolean`: `true` if the mobile number is valid, `false` otherwise.
- **Example**:
```typescript
validateIndianMobileNumber('9876543210'); // true
validateIndianMobileNumber('9123456789'); // true
validateIndianMobileNumber('1234567890'); // false
validateIndianMobileNumber('998877665'); // false
validateIndianMobileNumber('7896541230'); // true
validateIndianMobileNumber('123456789'); // false
Validates an Indian Permanent Account Number (PAN). A PAN consists of 5 uppercase letters, 4 digits, and 1 uppercase letter at the end.
- **Parameters**:
- `pan` (string): The PAN to validate.
- **Returns**:
- `boolean`: `true` if the PAN is valid, `false` otherwise.
- **Example**:
```typescript
validatePAN('ABCDE1234F'); // true
validatePAN('A1BCD2345E'); // false
validatePAN('ABCDE12345'); // false
validatePAN('ABCDE1234G'); // true
validatePAN('abcde1234f'); /
Validates an Indian Aadhar number. Aadhar numbers consist of 12 digits, starting with a number between 2 and 9.
- **Parameters**:
- `aadhar` (string): The Aadhar number to validate.
- **Returns**:
- `boolean`: `true` if the Aadhar number is valid, `false` otherwise.
- **Example**:
```typescript
validateAadhar('123456789012'); // false
validateAadhar('234567890123'); // true
validateAadhar('987654321012'); // true
validateAadhar('012345678901'); // false
validateAadhar('1234ABCD5678'); // false
Validates an Indian PIN code. A valid PIN code consists of 6 digits, with the first digit between 1 and 9.
- **Parameters**:
- `pin` (string): The PIN code to validate.
- **Returns**:
- `boolean`: `true` if the PIN code is valid, `false` otherwise.
- **Example**:
```typescript
validatePINCode('110001'); // true
validatePINCode('123456'); // true
validatePINCode('000000'); // false
validatePINCode('987654'); // true
validatePINCode('12345'); // false
validatePINCode('123AB6');
Validates an Indian GSTIN (Goods and Services Tax Identification Number). A valid GSTIN consists of 15 characters in a specific format:
- The first 2 characters are digits (representing the state code).
- The next 10 characters are alphanumeric (representing the PAN number).
- The 13th character is a letter (for the tax payer type).
- The 14th character is a letter or number (for the state code).
- The 15th character is a check digit.
- **Parameters**:
- `gstin` (string): The GSTIN to validate.
- **Returns**:
- `boolean`: `true` if the GSTIN is valid, `false` otherwise.
- **Example**:
```typescript
validateGSTIN('22ABCDE1234F1Z5'); // true
validateGSTIN('29AABCU9603R1Z5'); // true
validateGSTIN('27AAEPL1234F1Z9'); // true
validateGST
Validates an Indian IFSC (Indian Financial System Code) code. A valid IFSC code consists of 11 characters:
- The first 4 characters are uppercase letters (representing the bank code).
- The 5th character is always `0` (reserved for future use).
- The last 6 characters are numeric (representing the branch code).
- **Parameters**:
- `ifscCode` (string): The IFSC code to validate.
- **Returns**:
- `boolean`: `true` if the IFSC code is valid, `false` otherwise.
- **Example**:
```typescript
validateIFSCCode('HDFC0001234'); // true
validateIFSCCode('SBI0005678'); // true
validateIFSCCode('ICIC0001234'); // true
Validates an Indian Voter ID. A valid Voter ID consists of 10 characters in the following format:
- The first 3 characters are uppercase letters (representing the state code).
- The next 7 characters are digits (representing the unique voter ID number).
- The 10th character is an uppercase letter.
- **Parameters**:
- `voterID` (string): The Voter ID to validate.
- **Returns**:
- `boolean`: `true` if the Voter ID is valid, `false` otherwise.
- **Example**:
```typescript
validateVoterID('ABC1234567X'); // true
validateVoterID('XYZ9876543A'); // true
validateVoterID('MNP1234567B'); // true
validateVoterID('ABC1234A67X'); // false
validateVoterID('A123456789'); // false
validateVoterID('ABC12345678X'); // false
This project is licensed under the MIT License by Innostes Solutions.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
## Contact
For any inquiries or support, please contact us at:
- Email: support@innostes.com
- Website: [https://www.innostes.com](https://www.innostes.com)