内含95个工具函数 前端大佬都在使用的JavaScript工具函数宝典( 七 )

< temp.length; i++) {value = temp;}return value;}67 清除空格String.prototype.trim = function() {var reExtraSpace = /^s*(.*?)s+$/;return this.replace(reExtraSpace, "$1");};// 清除左空格function ltrim(s) {return s.replace(/^(s*| *)/, "");}// 清除右空格function rtrim(s) {return s.replace(/(s*| *)$/, "");}68 随机数时间戳function uniqueId() {var a = Math.random,b = parseInt;return (Number(new Date()).toString() + b(10 * a()) + b(10 * a()) + b(10 * a()));}69 实现utf8解码function utf8_decode(str_data) {var tmp_arr = [],i = 0,ac = 0,c1 = 0,c2 = 0,c3 = 0;str_data += "";while (i < str_data.length) {c1 = str_data.charCodeAt(i);if (c1 < 128) {tmp_arr[ac++] = String.fromCharCode(c1);i++;} else if (c1 > 191 && c1 < 224) {c2 = str_data.charCodeAt(i + 1);tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));i += 2;} else {c2 = str_data.charCodeAt(i + 1);c3 = str_data.charCodeAt(i + 2);tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));i += 3;}}return tmp_arr.join("");}以下的几个函数,用作常见的输入值校验和替换操作,主要针对中国大陆地区的校验规则:
70 校验是否为一个数字,以及该数字小数点位数是否与参数floats一致校验规则:

  • 若参数floats有值,则校验该数字小数点后的位数 。
  • 若参数floats没有值,则仅仅校验是否为数字 。
function isNum(value,floats=null){let regexp = new RegExp(`^[1-9][0-9]*.[0-9]{${floats}}$|^0.[0-9]{${floats}}$`);return typeof value =https://www.isolves.com/it/cxkf/yy/js/2020-08-05/== 'number' && floats?regexp.test(String(value)):true;}function anysicIntLength(minLength,maxLength){let result_str = '';if(minLength){switch(maxLength){case undefined:result_str = result_str.concat(`{${minLength-1}}`);break;case null:result_str = result_str.concat(`{${minLength-1},}`);break;default:result_str = result_str.concat(`{${minLength-1},${maxLength-1}}`);}}else{result_str = result_str.concat('*');}return result_str;}71 校验是否为非零的正整数function isInt(value,minLength=null,maxLength=undefined){if(!isNum(value)) return false;let regexp = new RegExp(`^-?[1-9][0-9]${anysicIntLength(minLength,maxLength)}$`);return regexp.test(value.toString());}72 校验是否为非零的正整数function isPInt(value,minLength=null,maxLength=undefined) {if(!isNum(value)) return false;let regexp = new RegExp(`^[1-9][0-9]${anysicIntLength(minLength,maxLength)}$`);return regexp.test(value.toString());}73 校验是否为非零的负整数function isNInt(value,minLength=null,maxLength=undefined){if(!isNum(value)) return false;let regexp = new RegExp(`^-[1-9][0-9]${anysicIntLength(minLength,maxLength)}$`);return regexp.test(value.toString());}74 校验整数是否在取值范围内校验规则:
  • minInt为在取值范围中最小的整数
  • maxInt为在取值范围中最大的整数
function checkIntRange(value,minInt,maxInt=9007199254740991){return Boolean(isInt(value) && (Boolean(minInt!=undefined && minInt!=null)?value>=minInt:true) && (value<=maxInt));}75 校验是否为中国大陆传真或固定电话号码function isFax(str) {return /^([0-9]{3,4})?[0-9]{7,8}$|^([0-9]{3,4}-)?[0-9]{7,8}$/.test(str);}76 校验是否为中国大陆手机号function isTel(value) {return /^1[3,4,5,6,7,8,9][0-9]{9}$/.test(value.toString());}77 校验是否为邮箱地址function isEmail(str) {return /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$/.test(str);}78 校验是否为QQ号码校验规则:
  • 非0开头的5位-13位整数
function isQQ(value) {return /^[1-9][0-9]{4,12}$/.test(value.toString());}79 校验是否为网址校验规则:
  • 以https://、http://、ftp://、rtsp://、mms://开头、或者没有这些开头
  • 可以没有www开头(或其他二级域名),仅域名
  • 网页地址中允许出现/%*?@&等其他允许的符
function isURL(str) {return /^(https://|http://|ftp://|rtsp://|mms://)?[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+[/=?%-&_~`@[]':+!]*([^<>""])*$/.test(str);}80 校验是否为不含端口号的IP地址校验规则:
IP格式为xxx.xxx.xxx.xxx,每一项数字取值范围为0-255
除0以外其他数字不能以0开头,比如02
function isIP(str) {return /^((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9]).){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])$/.test(str);}81 校验是否为IPv6地址校验规则:
支持IPv6正常格式
支持IPv6压缩格式
function isIPv6(str){return Boolean(str.match(/:/g)?str.match(/:/g).length<=7:false && /::/.test(str)?/^([da-f]{1,4}(:|::)){1,6}[da-f]{1,4}$/i.test(str):/^([da-f]{1,4}:){7}[da-f]{1,4}$/i.test(str));}


推荐阅读