/** * Checks if an email address is valid. * * @param {string} email * @returns {boolean} * * @example * isValidEmail('test@example.com') // true */ export function isValidEmail(email = '') { const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/ return emailPattern.test(email) } /** * Validates Philippine mobile number format. * * Must start with 09 and contain exactly 11 digits. * * @param {string} mobile * @returns {boolean} * * @example * hasValidMobileFormat('09171234567') // true */ export function hasValidMobileFormat(mobile = '') { const pattern = /^09\d{9}$/ return pattern.test(mobile) } /** * Checks whether a value is numeric. * * Accepts strings or numbers. * Rejects empty strings, whitespace, and NaN. * * @param {string|number} value * @returns {boolean} * * @example * isNumeric('123') // true * isNumeric(45) // true * isNumeric('12.3') // true * isNumeric('') // false * isNumeric(' ') // false */ export function isNumeric(value) { if (value === null || value === undefined) return false if (typeof value === 'string' && value.trim() === '') return false return !Number.isNaN(Number(value)) } /** * Checks whether a response is a "hash-like" string. * * A valid hash is: * - not empty * - not `true` * - not numeric * - does not contain spaces * * @param {*} response - The value to check * @returns {string|false} - Returns the string if it is a hash, otherwise false * * @example * isResponseAHash('abc123') // 'abc123' * isResponseAHash('123') // false * isResponseAHash(true) // false * isResponseAHash('hello world') // false */ export function isResponseAHash(response) { if (!response || response === true) return false const result = String(response) if (result.includes(' ') || !isNaN(result)) return false return result }