共计 2240 个字符,预计需要花费 6 分钟才能阅读完成。
61 清除脚本内容
function stripscript(s) {return s.replace(/.*?/gi, "");
}
62 判断是否以某个字符串开头
String.prototype.startWith = function(s) {return this.indexOf(s) == 0;
};
63 时间个性化输出功能
/*
1、< 60s, 显示为“刚刚”2、>= 1min && < 60 min, 显示与当前时间差“XX 分钟前”3、>= 60min && < 1day, 显示与当前时间差“今天 XX:XX”4、>= 1day && < 1year, 显示日期“XX 月 XX 日 XX:XX”5、>= 1year, 显示具体日期“XXXX 年 XX 月 XX 日 XX:XX”*/
function timeFormat(time) {var date = new Date(time),
curDate = new Date(),
year = date.getFullYear(),
month = date.getMonth() + 10,
day = date.getDate(),
hour = date.getHours(),
minute = date.getMinutes(),
curYear = curDate.getFullYear(),
curHour = curDate.getHours(),
timeStr;
if (year < curYear) {timeStr = year + "年" + month + "月" + day + "日" + hour + ":" + minute;} else {
var pastTime = curDate - date,
pastH = pastTime / 3600000;
if (pastH> curHour) {timeStr = month + "月" + day + "日" + hour + ":" + minute;} else if (pastH>= 1) {timeStr = "今天" + hour + ":" + minute + "分";} else {var pastM = curDate.getMinutes() - minute;
if (pastM> 1) {timeStr = pastM + "分钟前";} else {timeStr = "刚刚";}
}
}
return timeStr;
}
64 半角转换为全角函数
function toDBC(str) {
var result = "";
for (var i = 0; i < str.length; i++) {code = str.charCodeAt(i);
if (code>= 33 && code <= 126) {result += String.fromCharCode(str.charCodeAt(i) + 65248);
} else if (code == 32) {result += String.fromCharCode(str.charCodeAt(i) + 12288 - 32);
} else {result += str.charAt(i);
}
}
return result;
}
65 全角转换为半角函数
function toCDB(str) {
var result = "";
for (var i = 0; i < str.length; i++) {code = str.charCodeAt(i);
if (code>= 65281 && code <= 65374) {result += String.fromCharCode(str.charCodeAt(i) - 65248);
} else if (code == 12288) {result += String.fromCharCode(str.charCodeAt(i) - 12288 + 32);
} else {result += str.charAt(i);
}
}
return result;
}
66 金额大写转换函数
function transform(tranvalue) {
try {
var i = 1;
var dw2 = new Array(""," 万 "," 亿 "); // 大单位
var dw1 = new Array("拾", "佰", "仟"); // 小单位
var dw = new Array(
"零",
"壹",
"贰",
"叁",
"肆",
"伍",
"陆",
"柒",
"捌",
"玖"
);
// 整数部分用
// 以下是小写转换成大写显示在合计大写的文本框中
// 分离整数与小数
var source = splits(tranvalue);
var num = source[0];
var dig = source[1];
// 转换整数部分
var k1 = 0; // 计小单位
var k2 = 0; // 计大单位
var sum = 0;
var str = "";
var len = source[0].length; // 整数的长度
for (i = 1; i <= len; i++) {var n = source[0].charAt(len - i); // 取得某个位数上的数字
var bn = 0;
if (len - i - 1>= 0) {bn = source[0].charAt(len - i - 1); // 取得某个位数前一位上的数字
}
sum = sum + Number(n);
if (sum != 0) {str = dw[Number(n)].concat(str); // 取得该数字对应的大写数字,并插入到 str 字符串的前面
if (n == "0") sum = 0;
}
if (len - i - 1>= 0) {
// 在数字范围内
if (k1 != 3) {
// 加小单位
if (bn != 0) {str = dw1[k1].concat(str);
}
k1++;
} else {
// 不加小单位,加大单位
k1 = 0;
var temp = str.charAt(0);
if (temp == "万" || temp == "亿")
// 若大单位前没有数字则舍去大单位
str = str.substr(1, str.length - 1);
str = dw2[k2].concat(str);
sum = 0;
}
}
if (k1 == 3) {
// 小单位到千则大单位进一
k2++;
}
}
// 转换小数部分
var strdig = "";
if (dig != "") {var n = dig.charAt(0);
if (n != 0) {strdig += dw[Number(n)] + "角"; // 加数字
}
var n = dig.charAt(1);
if (n != 0) {strdig += dw[Number(n)] + "分"; // 加数字
}
}
str += "元" + strdig;
} catch (e) {return "0 元";}
return str;
}
// 拆分整数与小数
function splits(tranvalue) {var value = new Array("","");
temp = tranvalue.split(".");
for (var i = 0; i < 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 === '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);
}
正文完