35个前端常用工具函数(下)

简介: 35个前端常用工具函数

获取距离当前时间多久的时间


/**
• 获取距离当前时间多久的时间
• @param  type year年/month月/week周/day日 
• @param  number -为之前/+为之后 
*/
export const getBeforAfterTime = function(type=null,number=0) {
var nowdate = new Date();
switch (type) {
case "day":   //取number天前、后的时间
nowdate.setTime(nowdate.getTime() + (24  3600  1000) * number);
var y = nowdate.getFullYear();
var m = nowdate.getMonth() + 1;
var d = nowdate.getDate();
var retrundate = y + '/' + m + '/' + d;
break;
case "week":  //取number周前、后的时间
nowdate.setTime(nowdate.getTime() + (7  24  3600  1000)  number);
var y = nowdate.getFullYear();
var m = nowdate.getMonth() + 1;
var d = nowdate.getDate();
var retrundate = y + '/' + m + '/' + d;
break;
case "month":  //取number月前、后的时间
nowdate.setMonth(nowdate.getMonth() + number);
var y = nowdate.getFullYear();
var m = nowdate.getMonth() + 1;
var d = nowdate.getDate();
var retrundate = y + '/' + m + '/' + d;
break;
case "year":  //取number年前、后的时间
nowdate.setFullYear(nowdate.getFullYear() + number);
var y = nowdate.getFullYear();
var m = nowdate.getMonth() + 1;
var d = nowdate.getDate();
var retrundate = y + '/' + m + '/' + d;
break;
default:     //取当前时间
var y = nowdate.getFullYear();
var m = nowdate.getMonth() + 1;
var d = nowdate.getDate();
var retrundate = y + '/' + m + '/' + d;
}
return retrundate;
}


正则校验篇



邮箱

export function isEmail (s) {
return /^([a-zA-Z0-9-])+@([a-zA-Z0-9-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s)
}


手机号码


export function isMobile (s) {
return /^1[0-9]{10}$/.test(s)
}


电话号码


export function isPhone (s) {
return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s)
}


匹配腾讯QQ号

export function isQQ (s) {
return /[1-9][0-9]{4,}/.test(s)
}


URL地址


export function isURL (s) {
return /^http[s]?://.*/.test(s)
}

合法uri


export function validateURL (textval) {
const urlregex = /^(https?|ftp)://([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%
|[a-zA-Z0-9.,?'\+&%
/
return urlregex.test(textval)
}


小写字母


export function validateLowerCase (str) {
const reg = /[1]+$/
return reg.test(str)
}


大写字母


export function validateUpperCase (str) {
const reg = /[2]+$/
return reg.test(str)
}


大小写字


export function validatAlphabets (str) {
const reg = /[3]+$/
return reg.test(str)
}


验证pad还是pc


export const vaildatePc = function () {
const userAgentInfo = navigator.userAgent
const Agents = ['Android', 'iPhone',
'SymbianOS', 'Windows Phone',
'iPad', 'iPod'
]
let flag = true
for (var v = 0; v < Agents.length; v++) {
if (userAgentInfo.indexOf(Agents[v]) > 0) {
flag = false
break
}
}
return flag
}


判断姓名是否正确


export function validatename (name) {
var regName = /[4]{2,4}$/
if (!regName.test(name)) return false
return true
}

匹配8-16位数字和字母密码的正则表达式


export function validatePwd (pwd) {
var regName = /^(?![0-9]+)[0-9A-Za-z]{8,16}$/
if (!regName.test(pwd)) return false
return true
}

密码匹配(至少数字、字母、特殊符号两组组合)


export function validatePwd (pwd) {
var regName = /(^(?![A-Z]+)(?!\d+)\S+$)/
if (!regName.test(pwd)) return false
return true
}


密码匹配(密码由8位数字、大小写字母和特殊符号组成!)


export function validatePwd (pwd) {
var regName =  /(^(?=.[a-zA-Z])(?=.\d)(?=.*[~!@#)/
if (!regName.test(pwd)) return false
return true
}


判断是否为整数


export function validatenum (num, type) {
let regName = /[^\d.]/g
if (type == 1) {
if (!regName.test(num)) return false
} else if (type == 2) {
regName = /[^\d]/g
if (!regName.test(num)) return false
}
return true
}


判断是否为小数


export function validatenumord (num, type) {
let regName = /[^\d.]/g
if (type == 1) {
if (!regName.test(num)) return false
} else if (type == 2) {
regName = /[^\d.]/g
if (!regName.test(num)) return false
}
return true
}


判断是否为空


export function validatenull (val) {
if (typeof val === 'boolean') {
return false
}
if (typeof val === 'number') {
return false
}
if (val instanceof Array) {
if (val.length == 0) return true
} else if (val instanceof Object) {
if (JSON.stringify(val) === '{}') return true
} else {
if (val == 'null' || val == null || val == 'undefined' || val == undefined || val == '') return true
return false
}
return false
}

判断身份证号码


export function cardid (code) {
let list = []
let result = true
let msg = ''
var city = {
11: '北京',
12: '天津',
13: '河北',
14: '山西',
15: '内蒙古',
21: '辽宁',
22: '吉林',
23: '黑龙江 ',
31: '上海',
32: '江苏',
33: '浙江',
34: '安徽',
35: '福建',
36: '江西',
37: '山东',
41: '河南',
42: '湖北 ',
43: '湖南',
44: '广东',
45: '广西',
46: '海南',
50: '重庆',
51: '四川',
52: '贵州',
53: '云南',
54: '西藏 ',
61: '陕西',
62: '甘肃',
63: '青海',
64: '宁夏',
65: '新疆',
71: '台湾',
81: '香港',
82: '澳门',
91: '国外 '
}
if (!validatenull(code)) {
if (code.length == 18) {
if (!code || !/(^\d{18})/.test(code)) {
msg = '证件号码格式错误'
} else if (!city[code.substr(0, 2)]) {
msg = '地址编码错误'
} else {
// 18位身份证需要验证最后一位校验位
code = code.split('')
// ∑(ai×Wi)(mod 11)
// 加权因子
var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
// 校验位
var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2, 'x']
var sum = 0
var ai = 0
var wi = 0
for (var i = 0; i < 17; i++) {
ai = code[i]
wi = factor[i]
sum += ai * wi
}
if (parity[sum % 11] != code[17]) {
msg = '证件号码校验位错误'
} else {
result = false
}
}
} else {
msg = '证件号码长度不为18位'
}
} else {
msg = '证件号码不能为空'
}
list.push(result)
list.push(msg)
return list
}



  1. a-z ↩︎
  2. A-Z ↩︎
  3. A-Za-z ↩︎
  4. \u4e00-\u9fa5 ↩︎
相关文章
|
2月前
|
前端开发 JavaScript API
探索React Hooks:前端开发的革命性工具
【10月更文挑战第5天】探索React Hooks:前端开发的革命性工具
|
8天前
|
前端开发 数据处理 Android开发
Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍
本文深入探讨了Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍,以及具体操作步骤、常见问题解决、高级调试技巧、团队协作中的调试应用和未来发展趋势,旨在帮助开发者提高调试效率,提升应用质量。
31 8
|
15天前
|
监控 前端开发 JavaScript
前端稳定性工具-Sentry
【11月更文挑战第9天】Sentry 是一个开源的错误和性能监控平台,支持多种编程语言和框架。它能够捕获前端应用中的各种错误和性能问题,提供详细的错误信息和用户行为关联,帮助开发团队快速定位和解决问题,优化应用性能。但需注意隐私保护、数据准确性和成本控制。
|
22天前
|
前端开发 JavaScript API
前端开发的秘密武器:这些工具让你轻松应对各种复杂动画效果!
【10月更文挑战第30天】前端开发中,动画效果为页面增添了无限生机。CSS3的@keyframes规则和JavaScript动画库如GSAP、Anime.js等,使开发者能轻松实现从简单到复杂的动画效果。掌握动画原理和设计原则,结合工具和库,可以创造出既美观又实用的动画,提升用户体验。
47 4
|
20天前
|
Web App开发 前端开发 JavaScript
前端开发的秘密武器:这些工具让你轻松应对各种复杂布局!
【10月更文挑战第31天】前端开发充满挑战,尤其是在处理复杂布局时。本文介绍了几种关键工具和技术,如HTML和CSS基础、Firefox开发者工具、Visual Studio Code以及Vue、React和Angular等前端框架,帮助开发者高效应对复杂布局,提升代码质量和用户体验。
27 2
|
2月前
|
前端开发 JavaScript
前端:实现一个 sleep 函数
在前端开发中,实现一个 `sleep` 函数可以用来暂停代码执行,模拟延迟效果,常用于测试或控制异步操作的节奏。该函数通常基于 `Promise` 和 `setTimeout` 实现,简单易用。
|
2月前
|
自然语言处理 前端开发 JavaScript
推荐 10 个前端开发会用到的工具网站
本文介绍了多个前端开发工具,包括 Web Design Museum、Landing Page、Google Fonts、Lorem Ipsum、Animista、Blobmaker、Spline、CodeToGo、UnusedCSS 和 Responsively,帮助开发者提高效率和项目质量。这些工具涵盖了设计、动画、代码片段管理、响应式测试等多个方面。
82 0
推荐 10 个前端开发会用到的工具网站
|
2月前
|
Web App开发 前端开发 开发工具
2024前端开发工具推荐
本文推荐了2024年最受前端开发者欢迎的十款工具,包括Visual Studio Code、Dreamweaver、Sublime Text、WebStorm、Atom、HBuilder、Chrome Developer Tools、Figma、Postman和Git。这些工具覆盖了代码编辑、调试、版本控制及API开发等多个方面,旨在帮助开发者提高效率和代码质量,让开发工作更高效、更愉快。
|
2月前
|
存储 前端开发 JavaScript
前端模块化打包工具的深度解析
【10月更文挑战第13天】前端模块化打包工具的深度解析
|
2月前
|
存储 前端开发 JavaScript
前端开发中的状态管理概述与工具选择
【10月更文挑战第7天】前端开发中的状态管理概述与工具选择
23 0
下一篇
无影云桌面