JavaScript Validation Library

Validis
Comprehensive Validation Library

A powerful JavaScript validation library with a user-friendly, chainable API for complex validations.

npm install validis
View on GitHub

Powerful Features

Everything you need for form validation

Validis provides a comprehensive set of validation tools while maintaining simplicity and performance.

Schema-based API

Powerful chainable API for complex validations with intuitive syntax.

Class-based Validation

User-friendly class implementations with chainable methods for all validation types.

Legacy Function API

Simple function-based validations for quick implementation.

Comprehensive

Extensive validation options for strings, numbers, objects, arrays, and more.

Customizable

Highly customizable validation rules to fit your specific needs.

Cross Platform

Works seamlessly in both Browser and Node.js environments.

Modern API

Powerful Schema-based Validation

Validis provides two modern APIs for complex validation scenarios, giving you flexibility and power.

Schema-based API
A chainable API for complex validations with type safety
1const { Schema } = require('validis');
2
3// String validation
4const stringSchema = Schema.string().min(3).max(10).email();
5const result = stringSchema.parse('test@example.com');
6
7// Number validation
8const numberSchema = Schema.number().min(5).max(100).positive();
9const numResult = numberSchema.parse(42);
10
11// Boolean validation
12const boolSchema = Schema.boolean();
13const boolResult = boolSchema.parse(true);
14
15// Object validation
16const userSchema = Schema.object({
17  username: Schema.string().min(3).max(20),
18  email: Schema.string().email(),
19  age: Schema.number().min(18).optional()
20});
21const userResult = userSchema.parse({
22  username: 'johndoe',
23  email: 'john@example.com',
24  age: 25
25});
26
27// Array validation
28const arraySchema = Schema.array(Schema.string()).min(1).max(5);
29const arrayResult = arraySchema.parse(['apple', 'banana', 'cherry']);
Validation Methods

Available Validations

Explore the comprehensive set of validation methods available in Validis for all your validation needs.

String Schema Validations

min(length)

Minimum string length

max(length)

Maximum string length

length(length)

Exact string length

email()

Email format validation

url()

URL format validation

pattern(regex)

Custom regex pattern validation

noWhitespace()

No whitespace validation

nonEmpty()

Non-empty string validation

Documentation

Comprehensive Validation Library

Explore Validis's extensive validation functions with detailed examples, use cases, and return values. Our library supports Schema-based API, Legacy Function API, and Validation Schema Classes for all your validation needs.

Basic Validations
Essential validation functions for common use cases

email

Validates email format using regex pattern matching

Usage

1const { email } = require('validis');
2const result = email('test@example.com');
3// Returns: { valid: true } or { valid: false, reason: "Invalid email format." }

Valid Examples

user@example.com
name.lastname@domain.com

Invalid Examples

plainaddress
@domain.com

phone

Validates phone numbers with optional '+' prefix (10-15 digits)

Usage

1const { phone } = require('validis');
2const result = phone('+1234567890');
3// Returns: { valid: true } or { valid: false, reason: "Invalid phone number format." }

Valid Examples

+1234567890
1234567890

Invalid Examples

123456
abcdefghijk

char

Checks if the input string length does not exceed the given limit

Usage

1const { char } = require('validis');
2const result = char('hello', 10);
3// Returns: { valid: true } or { valid: false, reason: "Input exceeds character limit." }

Valid Examples

hello
short

Invalid Examples

this is too long
exceeds limit

Real-World Examples

See Validis in Action

Try out these interactive examples to see how Validis handles real-world validation scenarios.

Email Validation
Test the email validation function
Phone Validation
Test the phone number validation function
Password Validation
Test the password strength validation function
Code Implementation

Validis in Your Projects

Integrate Validis seamlessly into your frontend applications with these framework-specific examples. See how to implement form validation with our intuitive API across popular frameworks.

React Implementation
Using Validis in a React signup form with form validation
1import React, { useState } from "react";
2import { Schema } from "validis";
3
4const SignupForm = () => {
5  const [formData, setFormData] = useState({ email: "", password: "", username: "" });
6  const [errors, setErrors] = useState({});
7
8  // Define validation schemas
9  const userSchema = {
10    email: Schema.string().email(),
11    password: Schema.string().min(8).pass(),
12    username: Schema.string().min(3).max(20).noWhitespace()
13  };
14
15  const handleChange = ({ target: { name, value } }) =>
16    setFormData({ ...formData, [name]: value });
17
18  const handleSubmit = (e) => {
19    e.preventDefault();
20    const newErrors = {};
21    
22    // Validate each field using Schema API
23    Object.entries(userSchema).forEach(([field, schema]) => {
24      const result = schema.parse(formData[field]);
25      if (!result.success) {
26        newErrors[field] = result.errors.map(err => err.message).join(", ");
27      }
28    });
29
30    setErrors(newErrors);
31
32    if (Object.keys(newErrors).length === 0) {
33      console.log("Form submitted:", formData);
34      // Submit form data to server
35    }
36  };
37
38  return (
39    <form onSubmit={handleSubmit} className="space-y-4 p-6 bg-white dark:bg-gray-800 rounded-lg shadow">
40      {["email", "password", "username"].map((field) => (
41        <div key={field} className="space-y-2">
42          <label className="block text-sm font-medium">
43            {field.charAt(0).toUpperCase() + field.slice(1)}:
44          </label>
45          <input
46            type={field === "password" ? "password" : "text"}
47            name={field}
48            value={formData[field]}
49            onChange={handleChange}
50            className="w-full px-3 py-2 border rounded-md"
51          />
52          {errors[field] && (
53            <p className="text-red-500 text-sm">{errors[field]}</p>
54          )}
55        </div>
56      ))}
57      <button 
58        type="submit"
59        className="w-full py-2 px-4 bg-blue-600 text-white rounded-md hover:bg-blue-700"
60      >
61        Sign Up
62      </button>
63    </form>
64  );
65};
66
67export default SignupForm;
68