js实用小函数收集
格式化金额
1 2 3 4 5 | 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;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 创建表单,并以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");
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?