//定义常用时间日期格式
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);
}