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 ↩︎
相关文章
|
1月前
|
缓存 移动开发 Rust
前端构建工具 Mako 开源了
Hi,我是 sorrycc,Mako 的主要负责人之一,也是 Umi、Dva、Father 等库的作者。 很开心,Mako 终于开源了! Github 地址:https://github.com/umijs/mako/ 今天和大家正式介绍下他。
|
12天前
|
前端开发 JavaScript API
探索React Hooks:前端开发的革命性工具
【10月更文挑战第5天】探索React Hooks:前端开发的革命性工具
|
6天前
|
前端开发 JavaScript
前端:实现一个 sleep 函数
在前端开发中,实现一个 `sleep` 函数可以用来暂停代码执行,模拟延迟效果,常用于测试或控制异步操作的节奏。该函数通常基于 `Promise` 和 `setTimeout` 实现,简单易用。
|
4天前
|
自然语言处理 前端开发 JavaScript
推荐 10 个前端开发会用到的工具网站
本文介绍了多个前端开发工具,包括 Web Design Museum、Landing Page、Google Fonts、Lorem Ipsum、Animista、Blobmaker、Spline、CodeToGo、UnusedCSS 和 Responsively,帮助开发者提高效率和项目质量。这些工具涵盖了设计、动画、代码片段管理、响应式测试等多个方面。
24 0
推荐 10 个前端开发会用到的工具网站
|
1月前
|
存储 前端开发 JavaScript
前端基础(十二)_函数高级、全局变量和局部变量、 预解析(变量提升)、函数返回值
本文介绍了JavaScript中作用域的概念,包括全局变量和局部变量的区别,预解析机制(变量提升),以及函数返回值的使用和类型。通过具体示例讲解了变量的作用域、函数的返回值、以及如何通过return关键字从函数中返回数据。
20 1
前端基础(十二)_函数高级、全局变量和局部变量、 预解析(变量提升)、函数返回值
|
21天前
|
Web App开发 前端开发 开发工具
2024前端开发工具推荐
本文推荐了2024年最受前端开发者欢迎的十款工具,包括Visual Studio Code、Dreamweaver、Sublime Text、WebStorm、Atom、HBuilder、Chrome Developer Tools、Figma、Postman和Git。这些工具覆盖了代码编辑、调试、版本控制及API开发等多个方面,旨在帮助开发者提高效率和代码质量,让开发工作更高效、更愉快。
|
4天前
|
存储 前端开发 JavaScript
前端模块化打包工具的深度解析
【10月更文挑战第13天】前端模块化打包工具的深度解析
|
1月前
|
存储 前端开发 JavaScript
前端基础(十一)_函数声明及调用、函数的形参与实参、arguments参数、函数的参数类型、函数中的问题
本文介绍了JavaScript中函数的声明及调用、形参与实参的概念、arguments对象的使用、函数参数的类型以及函数中this的作用。通过示例代码详细解释了函数如何接收参数、如何处理参数个数不匹配的情况,以及函数在不同上下文中this的指向。
21 1
|
10天前
|
存储 前端开发 JavaScript
前端开发中的状态管理概述与工具选择
【10月更文挑战第7天】前端开发中的状态管理概述与工具选择
10 0
|
1月前
|
JavaScript 前端开发
前端JS函数
【9月更文挑战第4天】前端JS函数
26 6