/** * 校验电话号码 * 支持:大陆手机号、大陆固话、400电话、港澳手机号 * @param {string} phone * @returns {boolean} */ export function isValidPhone(phone) { if (!phone) return false // 大陆手机号 const mainlandMobile = /^1[3-9]\d{9}$/ // 大陆固话:区号(可选) + 7~8位号码 const mainlandLandline = /^(0\d{2,3}-?)\d{7,8}$/ // 400电话 const phone400 = /^400-?\d{3}-?\d{4}$/ // 港澳手机号(8位,首位5/6/8/9) const hkMacaoMobile = /^[5689]\d{7}$/ // 港澳固话 const hkMacaoLandline = /^(\d{4}-?)?\d{4}$/ return ( mainlandMobile.test(phone) || mainlandLandline.test(phone) || phone400.test(phone) || hkMacaoMobile.test(phone) || hkMacaoLandline.test(phone) ) } /** * 校验时段格式 HH:mm 及起止关系 * @param {string} startTime * @param {string} endTime * @returns {{valid: boolean, message?: string}} */ export function validateTimeRange(startTime, endTime) { const timeRegex = /^([0-1]\d|2[0-3]):([0-5]\d)$/ if (!startTime || !endTime) { return { valid: false, message: '请填写完整的起止时段' } } if (!timeRegex.test(startTime) || !timeRegex.test(endTime)) { return { valid: false, message: '时段格式不正确,应为 00:00 ~ 23:59' } } const [startH, startM] = startTime.split(':').map(Number) const [endH, endM] = endTime.split(':').map(Number) const start = startH * 60 + startM const end = endH * 60 + endM if (start > end) { return { valid: false, message: '开始时间不得晚于结束时间' } } return { valid: true } }