SocialShare / frontend /src /utils /validators.js
NitinBot002's picture
Initial commit with all project files
f4854a1
/**
* Form validation utilities
*/
export function validateEmail(email) {
const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return regex.test(email);
}
export function validatePhone(phone) {
const regex = /^[6-9]\d{9}$/;
return regex.test(phone.replace(/\s|-/g, ''));
}
export function validatePAN(pan) {
const regex = /^[A-Z]{5}[0-9]{4}[A-Z]{1}$/;
return regex.test(pan.toUpperCase());
}
export function validatePassword(password) {
// Minimum 8 characters, at least 1 uppercase, 1 lowercase, 1 number
const regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$/;
return regex.test(password);
}
export function validateRequired(value) {
return value !== undefined && value !== null && value.toString().trim() !== '';
}
export function validateMinLength(value, min) {
return value && value.length >= min;
}
export function validateMaxLength(value, max) {
return !value || value.length <= max;
}
export function validateAmount(amount) {
const num = parseFloat(amount);
return !isNaN(num) && num > 0 && num <= 10000000;
}
export function validatePincode(pincode) {
return /^\d{6}$/.test(pincode);
}
/**
* Validate full form
* @param {Object} fields - { fieldName: { value, validators: [{ fn, message }] } }
* @returns {{ isValid, errors }}
*/
export function validateForm(fields) {
const errors = {};
let isValid = true;
Object.entries(fields).forEach(([field, config]) => {
const { value, validators = [] } = config;
for (const { fn, message } of validators) {
if (!fn(value)) {
errors[field] = message;
isValid = false;
break;
}
}
});
return { isValid, errors };
}