lyjutils.js javascript 工具类
收集整理的常用js,部分方法依赖jquery
/*** 常用js工具类* [lyj 收集整理]* @type {Object}*/var lyj = (function(window, document, $) {var count = 1000;var browser = (function(){var versions = function() { var u = navigator.userAgent, app = navigator.appVersion; //移动终端浏览器版本信息 return { //IE内核 trident: u.indexOf('Trident') > -1, presto: u.indexOf('Presto') > -1, //opera内核 webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核 gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核 mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端 ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端 android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或uc浏览器 iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器 iPad: u.indexOf('iPad') > -1, //是否iPad webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部 html5plus:u.indexOf('Html5Plus') > -1}; }var language = (navigator.browserLanguage || navigator.language).toLowerCase();return {versions : versions,language : language};})();var tools = { // testtest : function(){alert("测试必须有"); console.log(browser);},/*** @title ajax封装* @author lyj [author] [2018-06-13]* @param {[type]} url [description]* @param {[type]} data [description]* @param {[type]} success [description]* @param {[type]} cache [description]* @param {[type]} alone [description]* @param {[type]} async [description]* @param {[type]} type [description]* @param {[type]} dataType [description]* @param {[type]} error [description]* @return {[type]} [description]*/ajaxReturn : function(url, data, success, cache, alone, async, type, dataType, error) {//请求类型var type = type || 'post'; //接收数据类型var dataType = dataType || 'json'; //异步请求var async = async || true; //独立提交(一次有效的提交)var alone = alone || false; //浏览器历史缓存var cache = cache || false; // 成功var success = success ||function(data) {setTimeout(function() { lyjalert(data.info);},500);if (data.status) {setTimeout(function() {if (data.url) {location.replace(data.url);} else {location.reload(true);}},1500);} };// 失败var error = error ||function(data) {setTimeout(function() {if (data.status == 404) {lyjalert('请求失败,请求未找到');} else if (data.status == 503) {lyjalert('请求失败,服务器内部错误');} else {lyjalert('请求失败,网络连接超时');}},500);};$.ajax({'url': url,'data': data,'type': type,'dataType': dataType,'async': async,'success': success,'error': error,'jsonpCallback': 'jsonp' + (new Date()).valueOf().toString().substr( - 4),'beforeSend': function() {// lyjalert('loading'); },});},/*** @title 检测 页面类型* @author lyj [author] [2018-05-21]* @return {[type]} [description]*/checktype : function(){var res = "";var arr = [];//判断是否是移动设备打开 if (browser.versions.mobile) {res += "||移动设备打开"; arr['mobile'] = 1;//获取判断用的对象 var ua = navigator.userAgent.toLowerCase();//在微信中打开 if (ua.match(/MicroMessenger/i) == "micromessenger") { // alert("weixin"); res += "||weixin"; arr['weixin'] = 1; }//在新浪微博客户端打开 if (ua.match(/WeiBo/i) == "weibo") { // alert("weibo"); res += "||weibo"; arr['weibo'] = 1; } if (ua.match(/QQ/i) == "qq") { // alert("QQ"); res += "||QQ";arr['QQ'] = 1; } if(/alipay/ig.test(ua)){ // alert("支付宝"); res += "||支付宝";arr['支付宝'] = 1; } //是否在IOS浏览器打开 if (browser.versions.ios) { // app 打开if(browser.versions.html5plus){res += "||苹果app打开"; arr['iosapp'] = 1; } else {res += "||苹果浏览器打开"; arr['iosbrowser'] = 1; }} //是否在安卓浏览器打开 if(browser.versions.android){ // app 打开if(browser.versions.html5plus){res += "||安卓app打开"; arr['androidapp'] = 1; } else { res += "||安卓浏览器打开"; arr['androidbrowser'] = 1; }} } else {res += "||PC浏览器打开"; arr['pc'] = 1; } // 安卓浏览器打开// if(arr['mobile']&&arr['androidbrowser']){// alert('安卓浏览器打开');// }console.info(arr);return arr;},// 获取 input name[] 数组的值my_array_name : function(namestr) {var valArr = new Array;$("input[name='" + namestr + "[]']").each(function(i) {valArr[i] = $(this).val();});// var priv = valArr.join(',');return valArr;},// 模板赋值assignModel : function(tpl, model){return tpl.replace(/\{([\w,-]+)\}/ig, function(matched, key){return model[key];}); },/*** @title 循环赋值* @author lyj [author] [2018-06-11]* @param {[type]} id [模板id 或 class]* @param {[type]} data [数组数据]* @param {[type]} outid [追加数据的div]* @return {[type]} [description]*/assignTbody : function(id, data, outid){// 追加还是替换var type = arguments[3] ? arguments[3] : 0;// 获取模板数据var tpl = $(id).html(); // 新模板数据var newTpl = '';// 遍历数据,替换到新模板for (x in data){newTpl += this.assignModel(tpl, data[x]); } // 替换if(type == 0){// 替换数据$(outid).html(newTpl); } else {// 追加数据 $(outid).append(newTpl);}},/*** @title 循环替换数据到 模板* @author lyj [author] [2018-06-25]* @param {[type]} id [description]* @param {[type]} data [description]* @return {[type]} [description]*/assignDatas: function(id, data){ // 获取模板数据var tpl = $(id).html();// 新模板数据var newTpl = '';// 遍历数据,替换到新模板for (x in data){newTpl += lyj.assignModel(tpl, data[x]); } return newTpl;},/*** @title 找到第一个祖先元素* @author lyj [author] [2018-05-21]* @param {[type]} objM [description]* @param {[type]} objP [description]* @return {[type]} [description]*/findFirstElement : function(objM,objP){return $(objM).closest(objP);},/*** @title 删除 第一个祖先元素* @author lyj [author] [2018-05-21]* @param {[type]} objM [自己]* @param {[type]} objP [祖先]* @return {[type]} [description]*/removeFirstElement : function(objM,objP){return $(objM).closest(objP).remove();},copyToClipboard : function(str){var textToClipboard = str;var success = true;if (window.clipboardData) { // Internet Explorerwindow.clipboardData.setData("Text", textToClipboard);} else {// create a temporary element for the execCommand methodvar forExecElement = this.createElementForExecCommand(textToClipboard);/* Select the contents of the element (the execCommand for 'copy' method works on the selection) */this.selectContent(forExecElement);var supported = true;// UniversalXPConnect privilege is required for clipboard access in Firefoxtry {if (window.netscape && netscape.security) {netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");}// Copy the selected content to the clipboard// Works in Firefox and in Safari before version 5success = document.execCommand("copy", false, null);} catch(e) {success = false;}// remove the temporary elementdocument.body.removeChild(forExecElement);}if (success) {alert("The text is on the clipboard, try to paste it!");} else {alert("Your browser doesn't allow clipboard access!");}},createElementForExecCommand : function(textToClipboard){var forExecElement = document.createElement("div");// place outside the visible areaforExecElement.style.position = "absolute";forExecElement.style.left = "-10000px";forExecElement.style.top = "-10000px";// write the necessary text into the element and append to the documentforExecElement.textContent = textToClipboard;document.body.appendChild(forExecElement);// the contentEditable mode is necessary for the execCommand method in FirefoxforExecElement.contentEditable = true;return forExecElement;},selectContent : function(element){// first create a rangevar rangeToSelect = document.createRange();rangeToSelect.selectNodeContents(element);// select the contentsvar selection = window.getSelection();selection.removeAllRanges();selection.addRange(rangeToSelect);},/*** @title 格式化json字符串 基于c.js* @author lyj [author] [2018-05-21]* @param {[type]} jsonstr [description]* @return {[type]} [description]*/formatjson : function(jsonstr){window.TAB = MultiplyString(2, window.SINGLE_TAB);var html = "";try {if (jsonstr == "") jsonstr = "\"\"";var obj = eval("[" + jsonstr + "]");html = ProcessObject(obj[0], 0, false, false, false);return "<PRE class='CodeContainer'>" + html + "</PRE>"; } catch(e) {alert("JSON数据格式不正确:\n" + e.message); }},/******************************日期时间[datetime]类js***********************************/ datetimeUtils : {patterns: { PATTERN_ERA: 'G', //Era 标志符 Era strings. For example: "AD" and "BC" PATTERN_YEAR: 'y', //年 PATTERN_MONTH: 'M', //月份 PATTERN_DAY_OF_MONTH: 'd', //月份的天数 PATTERN_HOUR_OF_DAY1: 'k', //一天中的小时数(1-24) PATTERN_HOUR_OF_DAY0: 'H', //24小时制,一天中的小时数(0-23) PATTERN_MINUTE: 'm', //小时中的分钟数 PATTERN_SECOND: 's', //秒 PATTERN_MILLISECOND: 'S', //毫秒 PATTERN_DAY_OF_WEEK: 'E', //一周中对应的星期,如星期一,周一 PATTERN_DAY_OF_YEAR: 'D', //一年中的第几天 PATTERN_DAY_OF_WEEK_IN_MONTH: 'F', //一月中的第几个星期(会把这个月总共过的天数除以7,不够准确,推荐用W) PATTERN_WEEK_OF_YEAR: 'w', //一年中的第几个星期 PATTERN_WEEK_OF_MONTH: 'W', //一月中的第几星期(会根据实际情况来算) PATTERN_AM_PM: 'a', //上下午标识 PATTERN_HOUR1: 'h', //12小时制 ,am/pm 中的小时数(1-12) PATTERN_HOUR0: 'K', //和h类型 PATTERN_ZONE_NAME: 'z', //时区名 PATTERN_ZONE_VALUE: 'Z', //时区值 PATTERN_WEEK_YEAR: 'Y', //和y类型 PATTERN_ISO_DAY_OF_WEEK: 'u', PATTERN_ISO_ZONE: 'X' }, week: { 'ch': { "0": "\u65e5", "1": "\u4e00", "2": "\u4e8c", "3": "\u4e09", "4": "\u56db", "5": "\u4e94", "6": "\u516d" }, 'en': { "0": "Sunday", "1": "Monday", "2": "Tuesday", "3": "Wednesday", "4": "Thursday", "5": "Friday", "6": "Saturday" } }, //获取当前时间 getCurrentTime: function() { var today = new Date(); var year = today.getFullYear(); var month = today.getMonth() + 1; var day = today.getDate(); var hours = today.getHours(); var minutes = today.getMinutes(); var seconds = today.getSeconds(); var timeString = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds; return timeString; }, /* * 比较时间大小 * time1>time2 return 1 * time1<time2 return -1 * time1==time2 return 0 */ compareTime: function(time1, time2) { if(Date.parse(time1.replace(/-/g, "/")) > Date.parse(time2.replace(/-/g, "/"))) { return 1; } else if(Date.parse(time1.replace(/-/g, "/")) < Date.parse(time2.replace(/-/g, "/"))) { return -1; } else if(Date.parse(time1.replace(/-/g, "/")) == Date.parse(time2.replace(/-/g, "/"))) { return 0; } }, //是否闰年 isLeapYear: function(year) { return((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0); }, //获取某个月的天数,从0开始 getDaysOfMonth: function(year, month) { return [31, (this.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]; }, getDaysOfMonth2: function(year, month) { // 将天置为0,会获取其上个月的最后一天 month = parseInt(month) + 1; var date = new Date(year, month, 0); return date.getDate(); }, /*距离现在几天的日期:负数表示今天之前的日期,0表示今天,整数表示未来的日期 * 如-1表示昨天的日期,0表示今天,2表示后天 */ fromToday: function(days) { var today = new Date(); today.setDate(today.getDate() + days); var date = today.getFullYear() + "-" + (today.getMonth() + 1) + "-" + today.getDate(); return date; }, /** * 日期时间格式化 * @param {Object} dateTime 需要格式化的日期时间 * @param {String} pattern 格式化的模式,如yyyy-MM-dd hh(HH):mm:ss.S a k K E D F w W z Z */ formt: function(dateTime, pattern) { var date = new Date(dateTime); if(Bee.StringUtils.isBlank(pattern)) { return date.toLocaleString(); } return pattern.replace(/([a-z])\1*/ig, function(matchStr, group1) { var replacement = ""; switch(group1) { case Bee.DateUtils.patterns.PATTERN_ERA: //G break; case Bee.DateUtils.patterns.PATTERN_WEEK_YEAR: //Y case Bee.DateUtils.patterns.PATTERN_YEAR: //y replacement = date.getFullYear(); break; case Bee.DateUtils.patterns.PATTERN_MONTH: //M var month = date.getMonth() + 1; replacement = (month < 10 && matchStr.length >= 2) ? "0" + month : month; break; case Bee.DateUtils.patterns.PATTERN_DAY_OF_MONTH: //d var days = date.getDate(); replacement = (days < 10 && matchStr.length >= 2) ? "0" + days : days; break; case Bee.DateUtils.patterns.PATTERN_HOUR_OF_DAY1: //k(1~24) var hours24 = date.getHours(); replacement = hours24; break; case Bee.DateUtils.patterns.PATTERN_HOUR_OF_DAY0: //H(0~23) var hours24 = date.getHours(); replacement = (hours24 < 10 && matchStr.length >= 2) ? "0" + hours24 : hours24; break; case Bee.DateUtils.patterns.PATTERN_MINUTE: //m var minutes = date.getMinutes(); replacement = (minutes < 10 && matchStr.length >= 2) ? "0" + minutes : minutes; break; case Bee.DateUtils.patterns.PATTERN_SECOND: //s var seconds = date.getSeconds(); replacement = (seconds < 10 && matchStr.length >= 2) ? "0" + seconds : seconds; break; case Bee.DateUtils.patterns.PATTERN_MILLISECOND: //S var milliSeconds = date.getMilliseconds(); replacement = milliSeconds; break; case Bee.DateUtils.patterns.PATTERN_DAY_OF_WEEK: //E var day = date.getDay(); replacement = Bee.DateUtils.week['ch'][day]; break; case Bee.DateUtils.patterns.PATTERN_DAY_OF_YEAR: //D replacement = Bee.DateUtils.dayOfTheYear(date); break; case Bee.DateUtils.patterns.PATTERN_DAY_OF_WEEK_IN_MONTH: //F var days = date.getDate(); replacement = Math.floor(days / 7); break; case Bee.DateUtils.patterns.PATTERN_WEEK_OF_YEAR: //w var days = Bee.DateUtils.dayOfTheYear(date); replacement = Math.ceil(days / 7); break; case Bee.DateUtils.patterns.PATTERN_WEEK_OF_MONTH: //W var days = date.getDate(); replacement = Math.ceil(days / 7); break; case Bee.DateUtils.patterns.PATTERN_AM_PM: //a var hours24 = date.getHours(); replacement = hours24 < 12 ? "\u4e0a\u5348" : "\u4e0b\u5348"; break; case Bee.DateUtils.patterns.PATTERN_HOUR1: //h(1~12) var hours12 = date.getHours() % 12 || 12; //0转为12 replacement = (hours12 < 10 && matchStr.length >= 2) ? "0" + hours12 : hours12; break; case Bee.DateUtils.patterns.PATTERN_HOUR0: //K(0~11) var hours12 = date.getHours() % 12; replacement = hours12; break; case Bee.DateUtils.patterns.PATTERN_ZONE_NAME: //z replacement = Bee.DateUtils.getZoneNameValue(date)['name']; break; case Bee.DateUtils.patterns.PATTERN_ZONE_VALUE: //Z replacement = Bee.DateUtils.getZoneNameValue(date)['value']; break; case Bee.DateUtils.patterns.PATTERN_ISO_DAY_OF_WEEK: //u break; case Bee.DateUtils.patterns.PATTERN_ISO_ZONE: //X break; default: break; } return replacement; }); }, /** * 计算一个日期是当年的第几天 * @param {Object} date */ dayOfTheYear: function(date) { var obj = new Date(date); var year = obj.getFullYear(); var month = obj.getMonth(); //从0开始 var days = obj.getDate(); var daysArr = [31, (this.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; for(var i = 0; i < month; i++) { days += daysArr[i]; } return days; }, //获得时区名和值 getZoneNameValue: function(dateObj) { var date = new Date(dateObj); date = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())); var arr = date.toString().match(/([A-Z]+)([-+]\d+:?\d+)/); var obj = { 'name': arr[1], 'value': arr[2] }; return obj; } },/******************************日期时间[datetime]类js***********************************//******************************数字[number]类js***********************************/numberUtils : {change_to_Chinese: function(Num) {//判断如果传递进来的不是字符的话转换为字符if (typeof Num == "number") {Num = new String(Num);};Num = Num.replace(/,/g, "") //替换tomoney()中的“,”Num = Num.replace(/ /g, "") //替换tomoney()中的空格Num = Num.replace(/¥/g, "") //替换掉可能出现的¥字符if (isNaN(Num)) { //验证输入的字符是否为数字//alert("请检查小写金额是否正确");return "";};//字符处理完毕后开始转换,采用前后两部分分别转换var part = String(Num).split(".");var newchar = "";//小数点前进行转化for (i = part[0].length - 1; i >= 0; i--) {if (part[0].length > 10) {return "";//若数量超过拾亿单位,提示}var tmpnewchar = ""var perchar = part[0].charAt(i);switch (perchar) {case "0":tmpnewchar = "零" + tmpnewchar;break;case "1":tmpnewchar = "壹" + tmpnewchar;break;case "2":tmpnewchar = "贰" + tmpnewchar;break;case "3":tmpnewchar = "叁" + tmpnewchar;break;case "4":tmpnewchar = "肆" + tmpnewchar;break;case "5":tmpnewchar = "伍" + tmpnewchar;break;case "6":tmpnewchar = "陆" + tmpnewchar;break;case "7":tmpnewchar = "柒" + tmpnewchar;break;case "8":tmpnewchar = "捌" + tmpnewchar;break;case "9":tmpnewchar = "玖" + tmpnewchar;break;}switch (part[0].length - i - 1) {case 0:tmpnewchar = tmpnewchar + "元";break;case 1:if (perchar != 0) tmpnewchar = tmpnewchar + "拾";break;case 2:if (perchar != 0) tmpnewchar = tmpnewchar + "佰";break;case 3:if (perchar != 0) tmpnewchar = tmpnewchar + "仟";break;case 4:tmpnewchar = tmpnewchar + "万";break;case 5:if (perchar != 0) tmpnewchar = tmpnewchar + "拾";break;case 6:if (perchar != 0) tmpnewchar = tmpnewchar + "佰";break;case 7:if (perchar != 0) tmpnewchar = tmpnewchar + "仟";break;case 8:tmpnewchar = tmpnewchar + "亿";break;case 9:tmpnewchar = tmpnewchar + "拾";break;}var newchar = tmpnewchar + newchar;}//小数点之后进行转化if (Num.indexOf(".") != -1) {if (part[1].length > 2) {// alert("小数点之后只能保留两位,系统将自动截断");part[1] = part[1].substr(0, 2)}for (i = 0; i < part[1].length; i++) {tmpnewchar = "";perchar = part[1].charAt(i); switch (perchar) {case "0":tmpnewchar = "零" + tmpnewchar;break;case "1":tmpnewchar = "壹" + tmpnewchar;break;case "2":tmpnewchar = "贰" + tmpnewchar;break;case "3":tmpnewchar = "叁" + tmpnewchar;break;case "4":tmpnewchar = "肆" + tmpnewchar;break;case "5":tmpnewchar = "伍" + tmpnewchar;break;case "6":tmpnewchar = "陆" + tmpnewchar;break;case "7":tmpnewchar = "柒" + tmpnewchar;break;case "8":tmpnewchar = "捌" + tmpnewchar;break;case "9":tmpnewchar = "玖" + tmpnewchar;break;}if (i == 0) tmpnewchar = tmpnewchar + "角";if (i == 1) tmpnewchar = tmpnewchar + "分";newchar = newchar + tmpnewchar;}}//替换所有无用汉字while (newchar.search("零零") != -1) newchar = newchar.replace("零零", "零");newchar = newchar.replace("零亿", "亿");newchar = newchar.replace("亿万", "亿");newchar = newchar.replace("零万", "万");newchar = newchar.replace("零元", "元");newchar = newchar.replace("零角", "");newchar = newchar.replace("零分", "");if (newchar.charAt(newchar.length - 1) == "元") {newchar = newchar + "整"}return newchar;},}, /******************************数字[number]类js***********************************//******************************字符串[string]类js***********************************/stringUtils : {/*** @title 字符串是空* @author lyj [author] [2018-05-23]* @param {[type]} input [description]* @return {Boolean} [description]*/isEmpty: function(input) {return input == null || input == '';},isNotEmpty: function(input) {return !this.isEmpty(input);},isBlank: function(input) {return input == null || /^\s*$/.test(input);},isNotBlank: function(input) {return !this.isBlank(input);},trim: function(input) {return input.replace(/^\s+|\s+$/, '');},trimToEmpty: function(input) {return input == null ? "" : this.trim(input);},startsWith: function(input, prefix) {return input.indexOf(prefix) === 0;},endsWith: function(input, suffix) {return input.lastIndexOf(suffix) === 0;},contains: function(input, searchSeq) {return input.indexOf(searchSeq) >= 0;},equals: function(input1, input2) {return input1 == input2;},equalsIgnoreCase: function(input1, input2) {return input1.toLocaleLowerCase() == input2.toLocaleLowerCase();},containsWhitespace: function(input) {return this.contains(input, ' ');},//生成指定个数的字符repeat: function(ch, repeatTimes) {var result = "";for(var i = 0; i < repeatTimes; i++) {result += ch;}return result;},deleteWhitespace: function(input) {return input.replace(/\s+/g, '');},rightPad: function(input, size, padStr) {return input + this.repeat(padStr, size);},leftPad: function(input, size, padStr) {return this.repeat(padStr, size) + input;},//首小写字母转大写capitalize: function(input) {var strLen = 0;if(input == null || (strLen = input.length) == 0) {return input;}return input.replace(/^[a-z]/, function(matchStr) {return matchStr.toLocaleUpperCase();});},//首大写字母转小写uncapitalize: function(input) {var strLen = 0;if(input == null || (strLen = input.length) == 0) {return input;}return input.replace(/^[A-Z]/, function(matchStr) {return matchStr.toLocaleLowerCase();});},//大写转小写,小写转大写swapCase: function(input) {return input.replace(/[a-z]/ig, function(matchStr) {if(matchStr >= 'A' && matchStr <= 'Z') {return matchStr.toLocaleLowerCase();} else if(matchStr >= 'a' && matchStr <= 'z') {return matchStr.toLocaleUpperCase();}});},//统计含有的子字符串的个数countMatches: function(input, sub) {if(this.isEmpty(input) || this.isEmpty(sub)) {return 0;}var count = 0;var index = 0;while((index = input.indexOf(sub, index)) != -1) {index += sub.length;count++;}return count;},//只包含字母isAlpha: function(input) {return /^[a-z]+$/i.test(input);},//只包含字母、空格isAlphaSpace: function(input) {return /^[a-z\s]*$/i.test(input);},//只包含字母、数字isAlphanumeric: function(input) {return /^[a-z0-9]+$/i.test(input);},//只包含字母、数字和空格isAlphanumericSpace: function(input) {return /^[a-z0-9\s]*$/i.test(input);},//数字isNumeric: function(input) {return /^(?:[1-9]\d*|0)(?:\.\d+)?$/.test(input);},//小数isDecimal: function(input) {return /^[-+]?(?:0|[1-9]\d*)\.\d+$/.test(input);},//负小数isNegativeDecimal: function(input) {return /^\-?(?:0|[1-9]\d*)\.\d+$/.test(input);},//正小数isPositiveDecimal: function(input) {return /^\+?(?:0|[1-9]\d*)\.\d+$/.test(input);},//整数isInteger: function(input) {return /^[-+]?(?:0|[1-9]\d*)$/.test(input);},//正整数isPositiveInteger: function(input) {return /^\+?(?:0|[1-9]\d*)$/.test(input);},//负整数isNegativeInteger: function(input) {return /^\-?(?:0|[1-9]\d*)$/.test(input);},//只包含数字和空格isNumericSpace: function(input) {return /^[\d\s]*$/.test(input);},isWhitespace: function(input) {return /^\s*$/.test(input);},isAllLowerCase: function(input) {return /^[a-z]+$/.test(input);},isAllUpperCase: function(input) {return /^[A-Z]+$/.test(input);},defaultString: function(input, defaultStr) {return input == null ? defaultStr : input;},defaultIfBlank: function(input, defaultStr) {return this.isBlank(input) ? defaultStr : input;},defaultIfEmpty: function(input, defaultStr) {return this.isEmpty(input) ? defaultStr : input;},//字符串反转reverse: function(input) {if(this.isBlank(input)) {input;}return input.split("").reverse().join("");},//删掉特殊字符(英文状态下)removeSpecialCharacter: function(input) {return input.replace(/[!-/:-@\[-`{-~]/g, "");},//只包含特殊字符、数字和字母(不包括空格,若想包括空格,改为[ -~])isSpecialCharacterAlphanumeric: function(input) {return /^[!-~]+$/.test(input);},/*** 校验时排除某些字符串,即不能包含某些字符串* @param {Object} conditions:里面有多个属性,如下:* * @param {String} matcherFlag 匹配标识* 0:数字;1:字母;2:小写字母;3:大写字母;4:特殊字符,指英文状态下的标点符号及括号等;5:中文;* 6:数字和字母;7:数字和小写字母;8:数字和大写字母;9:数字、字母和特殊字符;10:数字和中文;* 11:小写字母和特殊字符;12:大写字母和特殊字符;13:字母和特殊字符;14:小写字母和中文;15:大写字母和中文;* 16:字母和中文;17:特殊字符、和中文;18:特殊字符、字母和中文;19:特殊字符、小写字母和中文;20:特殊字符、大写字母和中文;* 100:所有字符;* @param {Array} excludeStrArr 排除的字符串,数组格式* @param {String} length 长度,可为空。1,2表示长度1到2之间;10,表示10个以上字符;5表示长度为5* @param {Boolean} ignoreCase 是否忽略大小写* conditions={matcherFlag:"0",excludeStrArr:[],length:"",ignoreCase:true}*/isPatternMustExcludeSomeStr: function(input, conditions) {//参数var matcherFlag = conditions.matcherFlag;var excludeStrArr = conditions.excludeStrArr;var length = conditions.length;var ignoreCase = conditions.ignoreCase;//拼正则var size = excludeStrArr.length;var regex = (size == 0) ? "^" : "^(?!.*(?:{0}))";var subPattern = "";for(var i = 0; i < size; i++) {excludeStrArr[i] = Bee.StringUtils.escapeMetacharacterOfStr(excludeStrArr[i]);subPattern += excludeStrArr[i];if(i != size - 1) {subPattern += "|";}}regex = this.format(regex, [subPattern]);switch(matcherFlag) {case '0':regex += "\\d";break;case '1':regex += "[a-zA-Z]";break;case '2':regex += "[a-z]";break;case '3':regex += "[A-Z]";break;case '4':regex += "[!-/:-@\[-`{-~]";break;case '5':regex += "[\u4E00-\u9FA5]";break;case '6':regex += "[a-zA-Z0-9]";break;case '7':regex += "[a-z0-9]";break;case '8':regex += "[A-Z0-9]";break;case '9':regex += "[!-~]";break;case '10':regex += "[0-9\u4E00-\u9FA5]";break;case '11':regex += "[a-z!-/:-@\[-`{-~]";break;case '12':regex += "[A-Z!-/:-@\[-`{-~]";break;case '13':regex += "[a-zA-Z!-/:-@\[-`{-~]";break;case '14':regex += "[a-z\u4E00-\u9FA5]";break;case '15':regex += "[A-Z\u4E00-\u9FA5]";break;case '16':regex += "[a-zA-Z\u4E00-\u9FA5]";break;case '17':regex += "[\u4E00-\u9FA5!-/:-@\[-`{-~]";break;case '18':regex += "[\u4E00-\u9FA5!-~]";break;case '19':regex += "[a-z\u4E00-\u9FA5!-/:-@\[-`{-~]";break;case '20':regex += "[A-Z\u4E00-\u9FA5!-/:-@\[-`{-~]";break;case '100':regex += "[\s\S]";break;default:alert(matcherFlag + ":This type is not supported!");}regex += this.isNotBlank(length) ? "{" + length + "}" : "+";regex += "$";var pattern = new RegExp(regex, ignoreCase ? "i" : "");return pattern.test(input);},/*** @param {String} message* @param {Array} arr* 消息格式化*/format: function(message, arr) {return message.replace(/{(\d+)}/g, function(matchStr, group1) {return arr[group1];});},/*** 把连续出现多次的字母字符串进行压缩。如输入:aaabbbbcccccd 输出:3a4b5cd* @param {String} input* @param {Boolean} ignoreCase : true or false */compressRepeatedStr: function(input, ignoreCase) {var pattern = new RegExp("([a-z])\\1+", ignoreCase ? "ig" : "g");return result = input.replace(pattern, function(matchStr, group1) {return matchStr.length + group1;});},/*** 校验必须同时包含某些字符串* @param {String} input* @param {Object} conditions:里面有多个属性,如下:* * @param {String} matcherFlag 匹配标识* 0:数字;1:字母;2:小写字母;3:大写字母;4:特殊字符,指英文状态下的标点符号及括号等;5:中文;* 6:数字和字母;7:数字和小写字母;8:数字和大写字母;9:数字、字母和特殊字符;10:数字和中文;* 11:小写字母和特殊字符;12:大写字母和特殊字符;13:字母和特殊字符;14:小写字母和中文;15:大写字母和中文;* 16:字母和中文;17:特殊字符、和中文;18:特殊字符、字母和中文;19:特殊字符、小写字母和中文;20:特殊字符、大写字母和中文;* 100:所有字符;* @param {Array} excludeStrArr 排除的字符串,数组格式* @param {String} length 长度,可为空。1,2表示长度1到2之间;10,表示10个以上字符;5表示长度为5* @param {Boolean} ignoreCase 是否忽略大小写* conditions={matcherFlag:"0",containStrArr:[],length:"",ignoreCase:true}* */isPatternMustContainSomeStr: function(input, conditions) {//参数var matcherFlag = conditions.matcherFlag;var containStrArr = conditions.containStrArr;var length = conditions.length;var ignoreCase = conditions.ignoreCase;//创建正则var size = containStrArr.length;var regex = "^";var subPattern = "";for(var i = 0; i < size; i++) {containStrArr[i] = Bee.StringUtils.escapeMetacharacterOfStr(containStrArr[i]);subPattern += "(?=.*" + containStrArr[i] + ")";}regex += subPattern;switch(matcherFlag) {case '0':regex += "\\d";break;case '1':regex += "[a-zA-Z]";break;case '2':regex += "[a-z]";break;case '3':regex += "[A-Z]";break;case '4':regex += "[!-/:-@\[-`{-~]";break;case '5':regex += "[\u4E00-\u9FA5]";break;case '6':regex += "[a-zA-Z0-9]";break;case '7':regex += "[a-z0-9]";break;case '8':regex += "[A-Z0-9]";break;case '9':regex += "[!-~]";break;case '10':regex += "[0-9\u4E00-\u9FA5]";break;case '11':regex += "[a-z!-/:-@\[-`{-~]";break;case '12':regex += "[A-Z!-/:-@\[-`{-~]";break;case '13':regex += "[a-zA-Z!-/:-@\[-`{-~]";break;case '14':regex += "[a-z\u4E00-\u9FA5]";break;case '15':regex += "[A-Z\u4E00-\u9FA5]";break;case '16':regex += "[a-zA-Z\u4E00-\u9FA5]";break;case '17':regex += "[\u4E00-\u9FA5!-/:-@\[-`{-~]";break;case '18':regex += "[\u4E00-\u9FA5!-~]";break;case '19':regex += "[a-z\u4E00-\u9FA5!-/:-@\[-`{-~]";break;case '20':regex += "[A-Z\u4E00-\u9FA5!-/:-@\[-`{-~]";break;case '100':regex += "[\s\S]";break;default:alert(matcherFlag + ":This type is not supported!");}regex += this.isNotBlank(length) ? "{" + length + "}" : "+";regex += "$";var pattern = new RegExp(regex, ignoreCase ? "i" : "");return pattern.test(input);},//中文校验isChinese: function(input) {return /^[\u4E00-\u9FA5]+$/.test(input);},//去掉中文字符removeChinese: function(input) {return input.replace(/[\u4E00-\u9FA5]+/gm, "");},//转义元字符escapeMetacharacter: function(input) {var metacharacter = "^$()*+.[]|\\-?{}|";if(metacharacter.indexOf(input) >= 0) {input = "\\" + input;}return input;},//转义字符串中的元字符escapeMetacharacterOfStr: function(input) {return input.replace(/[\^\$\(\)\*\+\.\[\]\|\\\-\?\{\}\|]/gm, "\\$&");}},/******************************字符串[string]类js***********************************//******************************加密算法[encryption]类js***********************************/encryptionUtils : {urlEncode : function(str){if (str == null || str == "") return "";var newStr = "";function toCase(sStr) {return sStr.toString(16).toUpperCase();}for (var i = 0,icode, len = str.length; i < len; i++) {icode = str.charCodeAt(i);if (icode < 0x10) newStr += "%0" + icode.toString(16).toUpperCase();else if (icode < 0x80) {if (icode == 0x20) newStr += "+";else if ((icode >= 0x30 && icode <= 0x39) || (icode >= 0x41 && icode <= 0x5A) || (icode >= 0x61 && icode <= 0x7A)) newStr += str.charAt(i);else newStr += "%" + toCase(icode);} else if (icode < 0x800) {newStr += "%" + toCase(0xC0 + (icode >> 6));newStr += "%" + toCase(0x80 + icode % 0x40);} else {newStr += "%" + toCase(0xE0 + (icode >> 12));newStr += "%" + toCase(0x80 + (icode >> 6) % 0x40);newStr += "%" + toCase(0x80 + icode % 0x40);}}return newStr;},},}// 返回可以暴露的内部成员return tools;})(window, document, $);// console.log(lyj);
转载于:https://www.cnblogs.com/liliyi/p/9252999.html
lyjutils.js javascript 工具类相关推荐
- JS WebSocket工具类
WebSocket工具类 WebSocket工具类 WebSocket工具类 var currentDomain = window.location.host; var urlDomain = 'ws ...
- 简化前端开发的javascript工具类收集
在此文中,非常有用的JavaScript库,来帮助你简化前端开发. Moment.js 修改和展示日期,能轻易地应用到Web应用中.例如,如果要显示15天前的日期 moment().subtract( ...
- javascript工具类(util)-持续更新
2019独角兽企业重金招聘Python工程师标准>>> 同步更新github,并含有测试用例. 地址 https://github.com/bosscheng/javascript- ...
- JavaScript常用工具类整理(总结版)
导读:在前端开发过程中需要对常用的功能模块进行封装,常用的方法多次调用需要整合,保证组件的复用性与程序的可维护性,这里总结一下,便于后续的使用! 目录 1.全局声明工具类 2.定时器 3.判断变量是否 ...
- javascript常用工具类的封装
目录 一.js数组工具类 工具类方法 工具类代码 测试MyArrayFn中的所有方法 二.js字符串校验工具类 工具类方法 工具类代码 三.js时间Date工具类 工具类方法 工具类代码 四.js浏览 ...
- 微信小程序 - 时间转换工具类timeUtils
GitHub Demo 地址: jh-weapp-demo 实现一些常用效果.封装通用组件和工具类 代码不定时更新,请前往github查看最新代码 小程序码 使用方法: const TimeUtils ...
- 使用JCrop进行图片裁剪,裁剪js说明,裁剪预览,裁剪上传,裁剪设计的图片处理的工具类和代码
1.要想制作图片裁剪功能,可以使用网上的裁剪工具JCrop,网址是:https://github.com/tapmodo/Jcrop/ 案例效果如下: 2.引入JCrop的js代码,具体要引入那 ...
- Cookie工具类-cookieUtil.js
重写Cookie工具类,可以在edit.jsp中引入,在引入的其他js中直接用. 在edit.jsp中引入 <script type="text/javascript" sr ...
- [Day.js] 工具类Day.js 的基本使用
工具类Day.js 的基本使用 一.Day.js 简介 二.使用方式 三.常见用法 1. 获取当前时间戳 2. 格式化时间 3. 指定日期 一.Day.js 简介 与Moment.js 一样,Day. ...
最新文章
- 2020-11-13size_t和int
- JavaSE入门学习51:多线程编程(二)
- 【NodeJS】运行在服务端的JavaScript
- Fragment重影(重叠)白屏等问题原理解析,以及解决方案
- php myadmin utf,phpmyadmin在哪里设置utf_8
- web farm 讨论引出
- 洛谷P1396 营救 题解
- 车纷享:基于阿里云HBase构建车联网平台实践
- POJ 3422 费用流
- spring 锁_分布式锁-快速实战
- 谷歌死磕亚马逊,CES 舞台上的语音入口争夺战
- 常用的正则表达式-收藏版
- 【单片机】51单片机烧录那些事儿
- IP is locked 的解决办法 Vivado
- error C2678
- 【MySQL】九、数据排序(升序 order by ... asc,降序 desc),sql语句的执行顺序
- 开发一个Canvas小游戏 实现一个游戏“引擎”
- 股市学习稳扎稳打(一)认识市场上的各路游资
- c语言输出十六进制数乱码,输出乱码
- Mysql优化,是什么,如何优化(一)