一些JS正则验证

//定义常用时间日期格式

const YYYY_MM_DD = "YYYY-MM-DD";
const YYYY_MM_DD2 = "YYYY/MM/DD";
const YY_MM_DD = "YY-MM-DD";
const HH_MM_SS_24 = "HH:mm:ss";
const HH_MM_SS_12 = "hh:mm:ss";

//方法 判断是否为空

function isEmptyValue(value) {
    if (value == null) return true;
    if (typeof value === 'string' && value.trim() === '') return true;
    if (Array.isArray(value) && value.length === 0) return true;
    if (value && typeof value === 'object' && Object.keys(value).length === 0) return true;
    return false;
}

//方法 去除空格

function trimVal(str) {
    if (typeof str !== 'string') {
        return str; // 如果不是字符串,直接返回原值
    }

    // 使用正则表达式匹配字符串两端的空格并替换为空字符串
    return str.replace(/^\s+|\s+$/g, '');
}

// 方法,用于生成日期时间格式的正则表达式

function generateDateTimeRegex(format) {
    // 定义日期和时间占位符的正则表达式模式
    const patterns = {
        'YYYY': '\\d{4}',
        'YY': '\\d{2}',
        'MM': '(0[1-9]|1[0-2])',
        'DD': '(0[1-9]|[12][0-9]|3[01])',
        'd': '\\d',
        'HH': '(0[0-9]|1[0-9]|2[0-3])',
        'hh': '(0[1-9]|1[0-2])',
        'mm': '[0-5][0-9]',
        'ss': '[0-5][0-9]',
        'a': '[ap]m',
    };
    // 使用replace函数和正则表达式替换格式中的占位符为对应的正则表达式模式
    return new RegExp('^' + format.replace(/(YYYY|YY|MM|DD|d|HH|hh|mm|ss|a)/g, (match) => patterns[match]) + '$');
}

// 方法,用于验证日期时间数据是否符合指定格式

function validDateTime(data, format) {
    data = trimVal(data);
    if(isEmptyValue(data))
    {
        return false;
    }
    // 生成对应的正则表达式
    const regex = generateDateTimeRegex(format);
    // 使用test方法检查数据是否符合正则表达式
    return regex.test(data);
}

// 只能是数字、英文字母或数字+英文字母

function validateAlphaNumeric(data) {
    data = trimVal(data);
    if(isEmptyValue(data))
    {
        return false;
    }
    const pattern = '^(?=.*[a-zA-Z]?)(?=.*\d?)[a-zA-Z0-9]+$';
    return new RegExp(pattern).test(data);
}

// 只能是数字(整数部分不超过固定位数)

function validateFixedLengthNumeric(data, length) {
    data = trimVal(data);
    if(isEmptyValue(data))
    {
        return false;
    }
    const pattern = `^\\d{1,${length}}(?:\\.\\d+)?$`;
    return new RegExp(pattern).test(data);
}

// 只能是固定数字+固定位英文字母

function validateFixedNumberAndLetters(data, fixedNumber, fixedLetters) {
    data = trimVal(data);
    if(isEmptyValue(data))
    {
        return false;
    }
    const pattern = `^${fixedNumber}[a-zA-Z]{${fixedLetters}}$`;
    return new RegExp(pattern).test(data);
}

// 需要包含英文数字符号

function validateContainsAlphaNumericSymbol(data) {
    data = trimVal(data);
    if(isEmptyValue(data))
    {
        return false;
    }
    const pattern = /^(?=.*[a-zA-Z0-9]).*$/;
    return pattern.test(data);
}

// 只能是英文数字符号

function validateAlphaNumericSymbol(data) {
    data = trimVal(data);
    if(isEmptyValue(data))
    {
        return false;
    }
    const pattern = /^[a-zA-Z0-9!@#$%^&*()_+\-]+$/;
    return pattern.test(data);
}

// 只能是数字英文(位数固定x)

function validateFixedLengthAlphaNumeric(data, totalLength) {
    data = trimVal(data);
    if(isEmptyValue(data))
    {
        return false;
    }
    // 使用模板字符串来构建正则表达式
    const pattern = new RegExp(`^[a-zA-Z0-9]{${totalLength}}$`);
    return pattern.test(data);
}

// 只能是英文字母 + (固定符号)

function validateLettersAndFixedSymbol(data, fixedSymbol) {
    data = trimVal(data);
    if(isEmptyValue(data))
    {
        return false;
    }
    // 转义固定符号
    const escapedFixedSymbol = escapeRegExp(fixedSymbol);
    // 构建正则表达式的模式部分
    const pattern = `^[a-zA-Z]+${escapedFixedSymbol}$`;
    // 创建正则表达式对象
    const regex = new RegExp(pattern);
    // 使用test方法检查输入字符串是否符合正则表达式模式
    return regex.test(data);
}

// 辅助函数,用于转义正则表达式中的特殊字符

function escapeRegExp(string) {
    return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}

// 只能含数字+英文+特殊符号(: , . + -)

function validateAlphaNumericSpecialChars(data, specialChars) {
    data = trimVal(data);
    if(isEmptyValue(data))
    {
        return false;
    }
    // 转义特殊字符数组中的每个元素
    const escapedSpecialChars = specialChars.map(escapeRegExp);
    // 使用模板字符串和join方法构建正则表达式的模式部分
    const pattern = `^[a-zA-Z0-9${escapedSpecialChars.join('')}]+$`;
    // 创建正则表达式对象
    const regex = new RegExp(pattern);
    // 使用test方法检查输入字符串是否符合正则表达式模式
    return regex.test(data);
}

// 只能是英文字母

function validateLettersOnly(data) {
    data = trimVal(data);
    if(isEmptyValue(data))
    {
        return false;
    }
    const pattern = /^[a-zA-Z]+$/;
    return pattern.test(data);
}
  • 33
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZH蔚来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值