/**
* 手机号验证
* @param {*} mobile
*/
export function isMobile(mobile) {
if (!mobile) {
utils.toast('请输入手机号码')
return false
}
if (!mobile.match(/^1[3-9][0-9]\d{8}$/)) {
utils.toast('手机号不正确')
return false
}
return true
}
/**
* 判断输入值是否为数字
* @param {*} value
*/
export function isNumber(value) {
if (typeof Number(value) === 'number' && !isNaN(value)) {
return true
} else {
return false
}
}
/**
* 判断字符串是否为空
* @param {*} str
*/
export function isEmpty(str) {
if (str === '' || str === undefined || str === null) {
return true
} else {
return false
}
}
/**
* 日期格式化
* @param {*} formatStr
* @param {*} fdate
*/
export function formatDate(formatStr, fdate) {
if (fdate) {
if (~fdate.indexOf('.')) {
fdate = fdate.substring(0, fdate.indexOf('.'))
}
fdate = fdate
.toString()
.replace('T', ' ')
.replace(/\-/g, '/')
var fTime,
fStr = 'ymdhis'
if (!formatStr) formatStr = 'y-m-d h:i:s'
if (fdate) fTime = new Date(fdate)
else fTime = new Date()
var month = fTime.getMonth() + 1
var day = fTime.getDate()
var hours = fTime.getHours()
var minu = fTime.getMinutes()
var second = fTime.getSeconds()
month = month < 10 ? '0' + month : month
day = day < 10 ? '0' + day : day
hours = hours < 10 ? '0' + hours : hours
minu = minu < 10 ? '0' + minu : minu
second = second < 10 ? '0' + second : second
var formatArr = [
fTime.getFullYear().toString(),
month.toString(),
day.toString(),
hours.toString(),
minu.toString(),
second.toString()
]
for (var i = 0; i < formatArr.length; i++) {
formatStr = formatStr.replace(fStr.charAt(i), formatArr[i])
}
return formatStr
} else {
return ''
}
}
/**
* 金额格式化
* @param {*} money
*/
export function rmoney(money) {
return parseFloat(money)
.toFixed(2)
.toString()
.split('')
.reverse()
.join('')
.replace(/(\d{3})/g, '$1,')
.replace(/\,$/, '')
.split('')
.reverse()
.join('')
}
/**
* 格式化手机号码
* @param {*} num
*/
export function formatNumber(num) {
return num.length === 11 ? num.replace(/^(\d{3})\d{4}(\d{4})$/, '$1****$2') : num
}
/**
* 内容替换
* @param {*} text 目标字符串
* @param {*} repstr 想替换的字符串
* @param {*} newstr 替换为新的字符串
* eg:
* var str1 = "abigbbigcbigd";
* var str2 = replaceAllStr(str1, "big", "G");
* 结果:aGbGcGd
*/
export function replaceAll(text, repstr, newstr) {
return text.replace(new RegExp(repstr, 'gm'), newstr)
}
/**
* 清除空格
* @param {*} value
*/
export function trim(value) {
return value.replace(/(^\s*)|(\s*$)/g, '')
}
/**
* 判断是否是数组
* @param {*} val
*/
export function isArray(val) {
return toString.call(val) === '[object Array]'
}
/**
* 判断是否是对象
* @param {*} val
*/
export function isObject(val) {
return val !== null && typeof val === 'object'
}
/**
* 判断是否是函数
* @param {*} val
*/
export function isFunction(val) {
return Object.prototype.toString.call(val) === '[object Function]'
}
/**
* 根据url地址下载
* @param {*} url
*/
export function download(url) {
var isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1
var isSafari = navigator.userAgent.toLowerCase().indexOf('safari') > -1
if (isChrome || isSafari) {
var link = document.createElement('a')
link.href = url
if (link.download !== undefined) {
var fileName = url.substring(url.lastIndexOf('/') + 1, url.length)
link.download = fileName
}
if (document.createEvent) {
var e = document.createEvent('MouseEvents')
e.initEvent('click', true, true)
link.dispatchEvent(e)
return true
}
}
if (url.indexOf('?') === -1) {
url += '?download'
}
window.open(url, '_self')
return true
}
/**
* 获取滚动的坐标
* @param {*} el
*/
export const getScrollPosition = (el = window) => ({
x: el.pageXOffset !== undefined ? el.pageXOffset : el.scrollLeft,
y: el.pageYOffset !== undefined ? el.pageYOffset : el.scrollTop
})
/**
* 滚动到顶部
*/
export const scrollToTop = () => {
const c = document.documentElement.scrollTop || document.body.scrollTop
if (c > 0) {
window.requestAnimationFrame(scrollToTop)
window.scrollTo(0, c - c / 8)
}
}
/**
* 判断输入的格式是否正确
* @param {*} str 输入内容
* @param {*} type 类型
*/
export const checkStr = (str, type) => {
switch (type) {
case 'phone': //手机号码
return /^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str)
case 'tel': //座机
return /^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(str)
case 'card': //身份证
return /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(str)
case 'pwd': //密码以字母开头,长度在6~18之间,只能包含字母、数字和下划线
return /^[a-zA-Z]\w{5,17}$/.test(str)
case 'postal': //邮政编码
return /[1-9]\d{5}(?!\d)/.test(str)
case 'QQ': //QQ号
return /^[1-9][0-9]{4,9}$/.test(str)
case 'email': //邮箱
return /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str)
case 'money': //金额(小数点2位)
return /^\d*(?:\.\d{0,2})?$/.test(str)
case 'URL': //网址
return /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/.test(str)
case 'IP': //IP
return /((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/.test(str)
case 'date': //日期时间
return (
/^(\d{4})\-(\d{2})\-(\d{2}) (\d{2})(?:\:\d{2}|:(\d{2}):(\d{2}))$/.test(str) ||
/^(\d{4})\-(\d{2})\-(\d{2})$/.test(str)
)
case 'number': //数字
return /^[0-9]$/.test(str)
case 'english': //英文
return /^[a-zA-Z]+$/.test(str)
case 'chinese': //中文
return /^[\\u4E00-\\u9FA5]+$/.test(str)
case 'lower': //小写
return /^[a-z]+$/.test(str)
case 'upper': //大写
return /^[A-Z]+$/.test(str)
case 'HTML': //HTML标记
return /<("[^"]*"|'[^']*'|[^'">])*>/.test(str)
default:
return true
}
}
/**
* 验证身份证号码
* @param {*} sId
*/
export const isCardID = sId => {
if (!/(^\d{15}$)|(^\d{17}(\d|X|x)$)/.test(sId)) {
console.log('你输入的身份证长度或格式错误')
return false
}
//身份证城市
var aCity = {
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 (!aCity[parseInt(sId.substr(0, 2))]) {
console.log('你的身份证地区非法')
return false
}
// 出生日期验证
var sBirthday = (sId.substr(6, 4) + '-' + Number(sId.substr(10, 2)) + '-' + Number(sId.substr(12, 2))).replace(
/-/g,
'/'
),
d = new Date(sBirthday)
if (sBirthday != d.getFullYear() + '/' + (d.getMonth() + 1) + '/' + d.getDate()) {
console.log('身份证上的出生日期非法')
return false
}
// 身份证号码校验
var sum = 0,
weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2],
codes = '10X98765432'
for (var i = 0; i < sId.length - 1; i++) {
sum += sId[i] * weights[i]
}
var last = codes[sum % 11] //计算出来的最后一位身份证号码
if (sId[sId.length - 1] != last) {
console.log('你输入的身份证号非法')
return false
}
return true
}
/**
* 将阿拉伯数字翻译成对应的中文数字
* @param {*} num
*/
export const numberToChinese = num => {
var AA = new Array('零', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十')
var BB = new Array('', '十', '百', '仟', '萬', '億', '点', '')
var a = ('' + num).replace(/(^0*)/g, '').split('.'),
k = 0,
re = ''
for (var i = a[0].length - 1; i >= 0; i--) {
switch (k) {
case 0:
re = BB[7] + re
break
case 4:
if (!new RegExp('0{4}//d{' + (a[0].length - i - 1) + '}$').test(a[0])) re = BB[4] + re
break
case 8:
re = BB[5] + re
BB[7] = BB[5]
k = 0
break
}
if (k % 4 == 2 && a[0].charAt(i + 2) != 0 && a[0].charAt(i + 1) == 0) re = AA[0] + re
if (a[0].charAt(i) != 0) re = AA[a[0].charAt(i)] + BB[k % 4] + re
k++
}
if (a.length > 1) {
// 加上小数部分(如果有小数部分)
re += BB[6]
for (var i = 0; i < a[1].length; i++) re += AA[a[1].charAt(i)]
}
if (re == '一十') re = '十'
if (re.match(/^一/) && re.length == 3) re = re.replace('一', '')
return re
}
/**
* 数组去重
* @param {*} arr
*/
export const unique = arr => {
if (Array.hasOwnProperty('from')) {
return Array.from(new Set(arr))
} else {
var n = {},
r = []
for (var i = 0; i < arr.length; i++) {
if (!n[arr[i]]) {
n[arr[i]] = true
r.push(arr[i])
}
}
return r
}
}
/**
* 求两个数组的并集
* @param {*} a
* @param {*} b
*/
export const union = (a, b) => {
var newArr = a.concat(b)
return unique(newArr)
}
/**
* 求两个数组的交集
* @param {*} a
* @param {*} b
*/
export const intersect = (a, b) => {
var _this = this
a = this.unique(a)
return this.map(a, function(o) {
return _this.contains(b, o) ? o : null
})
}
/**
* 检测密码强度
* @param {*} str
*/
export const checkPwd = str => {
var Lv = 0
if (str.length < 6) {
return Lv
}
if (/[0-9]/.test(str)) {
Lv++
}
if (/[a-z]/.test(str)) {
Lv++
}
if (/[A-Z]/.test(str)) {
Lv++
}
if (/[\.|-|_]/.test(str)) {
Lv++
}
return Lv
}
vue项目常用表单验证和部分工具函数
最新推荐文章于 2024-05-10 10:01:52 发布