js实用小函数收集
格式化金额
var val='212312.235423'
var rex = /\d{1,3}(?=(\d{3})+$)/g;
val.replace(/^(-?)(\d+)((\.\d+)?)$/, function (s, s1, s2, s3) {
return '$' + s1 + s2.replace(rex, '$&,') + s3;
})
/**获取数组指定元素的下标*/ Array.prototype.indexOf = function(val) { for (var i = 0; i < this.length; i++) { if (this[i] == val) return i; } return -1; }; /**删除数组中的某个元素*/ Array.prototype.remove = function(val) { var index = this.indexOf(val); if (index > -1) { this.splice(index, 1); } };
数组去重
Array.from(new Set(arr));
数组排序
//降序排序
functionn sortArray(a, b) {
return b - a;
}
arr.sort(sortArray);
//json降序排序,按其中某个属性排序,比如ID
function sortByDesc(a,b){
return b.id-a.id;
}
字符串去重
function removeDuplicates(arr) {
var temp = {}, r = [];
for (var i in arr)
temp[arr[i]] = true;
for (var k in temp)
r.push(k);
return r;
}
创建表单,并以post方式提交
$(".details").click(function(){ var type=$(this).attr("type"); var financingAmount=$(this).attr("financingAmount"); var url = "/supplierAccountCenterController/suppliereceivingadd"; //首先创建一个form表单 var tempForm = document.createElement("form"); tempForm.id="tempForm1"; tempForm.method="post"; tempForm.action=url; tempForm.target="_blank"; //创建input标签,用来设置参数 var hideInput = document.createElement("input"); hideInput.type="hidden"; hideInput.name= "type"; hideInput.value= type; //将input表单放到form表单里 tempForm.appendChild(hideInput); //将此form表单添加到页面主体body中 document.body.appendChild(tempForm); tempForm.submit(); document.body.removeChild(tempForm); }
$.ajaxSetup({cache:false}); 设置ajax非缓存机制
校验手机号码正则: new RegExp(/^((13[0-9])|(14[4,7])|(15[^4,\D])|(17[6-8])|(18[0-9]))(\d{8})$/).test(mobile)
身份证验证
function checkIdcard(num) {
num = num.toUpperCase();
// 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。
if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) {
// alert('输入的身份证号长度不对,或者号码不符合规定!\n15位号码应全为数字,18位号码末位可以为数字或X。');
ymPrompt.alert('请输入正确的身份证号码!', 400, 200, '失败', null);
return false;
}
// 校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
// 下面分别分析出生日期和校验位
var len, re;
len = num.length;
if (len == 15) {
re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
var arrSplit = num.match(re);
// 检查生日日期是否正确
var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/'
+ arrSplit[4]);
var bGoodDay;
bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2]))
&& ((dtmBirth.getMonth() + 1) == Number(arrSplit[3]))
&& (dtmBirth.getDate() == Number(arrSplit[4]));
if (!bGoodDay) {
// alert('输入的身份证号里出生日期不对!');
ymPrompt.alert('请输入正确的身份证号码!', 400, 200, '失败', null);
return false;
} else {
// 将15位身份证转成18位
// 校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5,
8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4',
'3', '2');
var nTemp = 0, i;
num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);
for (i = 0; i < 17; i++) {
nTemp += num.substr(i, 1) * arrInt[i];
}
num += arrCh[nTemp % 11];
return true;
}
}
if (len == 18) {
re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
var arrSplit = num.match(re);
// 检查生日日期是否正确
var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
var bGoodDay;
bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3]))&& (dtmBirth.getDate() == Number(arrSplit[4]));
if (!bGoodDay) {
// alert(dtmBirth.getYear());
// alert(arrSplit[2]);
// alert('输入的身份证号里出生日期不对!');
ymPrompt.alert('请输入正确的身份证号码!', 400, 200, '失败', null);
return false;
} else {
// 检验18位身份证的校验码是否正确。
// 校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
var valnum;
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4','3', '2');
var nTemp = 0, i;
for (i = 0; i < 17; i++) {
nTemp += num.substr(i, 1) * arrInt[i];
}
valnum = arrCh[nTemp % 11];
if (valnum != num.substr(17, 1)) {
// alert('18位身份证的校验码不正确!应该为:' + valnum);
ymPrompt.alert('请输入正确的身份证号码!', 400, 200, '失败', null);
return false;
}
return true;
}
}
return false;
}
邮箱校验正则表达式 : /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/
银行账号校验
function luhmCheck1(bankno) {
var lastNum = bankno.substr(bankno.length - 1, 1);// 取出最后一位(与luhm进行比较)
var first15Num = bankno.substr(0, bankno.length - 1);// 前15或18位
var newArr = new Array();
for ( var i = first15Num.length - 1; i > -1; i--) { // 前15或18位倒序存进数组
newArr.push(first15Num.substr(i, 1));
}
var arrJiShu = new Array(); // 奇数位*2的积 <9
var arrJiShu2 = new Array(); // 奇数位*2的积 >9
var arrOuShu = new Array(); // 偶数位数组
for ( var j = 0; j < newArr.length; j++) {
if ((j + 1) % 2 == 1) {// 奇数位
if (parseInt(newArr[j]) * 2 < 9)
arrJiShu.push(parseInt(newArr[j]) * 2);
else
arrJiShu2.push(parseInt(newArr[j]) * 2);
} else
// 偶数位
arrOuShu.push(newArr[j]);
}
var jishu_child1 = new Array();// 奇数位*2 >9 的分割之后的数组个位数
var jishu_child2 = new Array();// 奇数位*2 >9 的分割之后的数组十位数
for ( var h = 0; h < arrJiShu2.length; h++) {
jishu_child1.push(parseInt(arrJiShu2[h]) % 10);
jishu_child2.push(parseInt(arrJiShu2[h]) / 10);
}
var sumJiShu = 0; // 奇数位*2 < 9 的数组之和
var sumOuShu = 0; // 偶数位数组之和
var sumJiShuChild1 = 0; // 奇数位*2 >9 的分割之后的数组个位数之和
var sumJiShuChild2 = 0; // 奇数位*2 >9 的分割之后的数组十位数之和
var sumTotal = 0;
for ( var m = 0; m < arrJiShu.length; m++) {
sumJiShu = sumJiShu + parseInt(arrJiShu[m]);
}
for ( var n = 0; n < arrOuShu.length; n++) {
sumOuShu = sumOuShu + parseInt(arrOuShu[n]);
}
for ( var p = 0; p < jishu_child1.length; p++) {
sumJiShuChild1 = sumJiShuChild1 + parseInt(jishu_child1[p]);
sumJiShuChild2 = sumJiShuChild2 + parseInt(jishu_child2[p]);
}
// 计算总和
sumTotal = parseInt(sumJiShu) + parseInt(sumOuShu) + parseInt(sumJiShuChild1) + parseInt(sumJiShuChild2);
// 计算Luhm值(模10算法)
var k = parseInt(sumTotal) % 10 == 0 ? 10 : parseInt(sumTotal) % 10;
var luhm = 10 - k;
if (lastNum == luhm) {
return true;
} else {
return false;
}
}
1、全局替换字符
str.replace(/\toreplacestr/g, '' replacestr");