js的校驗
阿新 • • 發佈:2018-12-04
1、判斷是否為數字(整數、小數)
//使用isNaN()函式
//isNaN()的缺點就在於 null、空格以及空串會被按照0來處理
//isNaN: Not a Number
function isRealNum(val){
// isNaN()函式 把空串 空格 以及NUll 按照0來處理 所以先去除
if(val === "" || val ==null){
return false;
}
if(!isNaN(val)){
return true;
}else{
return false;
}
}
function isNumber(val){
var regPos = /^\d+(\.\d+)?$/; //非負浮點數
var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //負浮點數
if(regPos.test(val) || regNeg.test(val)){
return true;
}else{
return false;
}
}
//小數
var n=3.143423423;
alert(n.toString().split("." )[1].length);
2、金額
function changeMoneyToChinese(money){
var cnNums = new Array("零","壹","貳","叄","肆","伍","陸","柒","捌","玖"); //漢字的數字
var cnIntRadice = new Array("","拾","佰","仟"); //基本單位
var cnIntUnits = new Array("","萬","億","兆"); //對應整數部分擴充套件單位
var cnDecUnits = new Array("角","分","毫","釐"); //對應小數部分單位
//var cnInteger = "整"; //整數金額時後面跟的字元
var cnIntLast = "元"; //整型完以後的單位
var maxNum = 999999999999999.9999; //最大處理的數字
var IntegerNum; //金額整數部分
var DecimalNum; //金額小數部分
var ChineseStr=""; //輸出的中文金額字串
var parts; //分離金額後用的陣列,預定義
if( money == "" ){
return "";
}
money = parseFloat(money);
if( money >= maxNum ){
$.alert('超出最大處理數字');
return "";
}
if( money == 0 ){
//ChineseStr = cnNums[0]+cnIntLast+cnInteger;
ChineseStr = cnNums[0]+cnIntLast
//document.getElementById("show").value=ChineseStr;
return ChineseStr;
}
money = money.toString(); //轉換為字串
if( money.indexOf(".") == -1 ){
IntegerNum = money;
DecimalNum = '';
}else{
parts = money.split(".");
IntegerNum = parts[0];
DecimalNum = parts[1].substr(0,4);
}
if( parseInt(IntegerNum,10) > 0 ){//獲取整型部分轉換
zeroCount = 0;
IntLen = IntegerNum.length;
for( i=0;i<IntLen;i++ ){
n = IntegerNum.substr(i,1);
p = IntLen - i - 1;
q = p / 4;
m = p % 4;
if( n == "0" ){
zeroCount++;
}else{
if( zeroCount > 0 ){
ChineseStr += cnNums[0];
}
zeroCount = 0; //歸零
ChineseStr += cnNums[parseInt(n)]+cnIntRadice[m];
}
if( m==0 && zeroCount<4 ){
ChineseStr += cnIntUnits[q];
}
}
ChineseStr += cnIntLast;
//整型部分處理完畢
}
if( DecimalNum!= '' ){//小數部分
decLen = DecimalNum.length;
for( i=0; i<decLen; i++ ){
n = DecimalNum.substr(i,1);
if( n != '0' ){
ChineseStr += cnNums[Number(n)]+cnDecUnits[i];
}
}
}
if( ChineseStr == '' ){
//ChineseStr += cnNums[0]+cnIntLast+cnInteger;
ChineseStr += cnNums[0]+cnIntLast;
}/* else if( DecimalNum == '' ){
ChineseStr += cnInteger;
ChineseStr += cnInteger;
} */
return ChineseStr;
}
3、身份證
function testid(id) {
// 1 "驗證通過!", 0 //校驗不通過
var format = /^(([1][1-5])|([2][1-3])|([3][1-7])|([4][1-6])|([5][0-4])|([6][1-5])|([7][1])|([8][1-2]))\d{4}(([1][9]\d{2})|([2]\d{3}))(([0][1-9])|([1][0-2]))(([0][1-9])|([1-2][0-9])|([3][0-1]))\d{3}[0-9xX]$/;
//號碼規則校驗
if(!format.test(id)){
return {'status':0,'msg':'身份證號碼不合規'};
}
//區位碼校驗
//出生年月日校驗 前正則限制起始年份為1900;
var year = id.substr(6,4),//身份證年
month = id.substr(10,2),//身份證月
date = id.substr(12,2),//身份證日
time = Date.parse(month+'-'+date+'-'+year),//身份證日期時間戳date
now_time = Date.parse(new Date()),//當前時間戳
dates = (new Date(year,month,0)).getDate();//身份證當月天數
if(time>now_time||date>dates){
return {'status':0,'msg':'出生日期不合規'}
}
//校驗碼判斷
var c = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2); //係數
var b = new Array('1','0','X','9','8','7','6','5','4','3','2'); //校驗碼對照表
var id_array = id.split("");
var sum = 0;
for(var k=0;k<17;k++){
sum+=parseInt(id_array[k])*parseInt(c[k]);
}
if(id_array[17].toUpperCase() != b[sum%11].toUpperCase()){
return {'status':0,'msg':'身份證校驗碼不合規'}
}
return {'status':1,'msg':'校驗通過'}
}
5、是否必錄
//校驗表單必錄,每個必錄的表單需要增加一個屬性required='true'
6、郵箱
var reg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9][email protected]([a-zA-Z0-9]+[_|\_|\.]?)
*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;
if(!reg.test(Email)){
alert("電子郵箱格式有誤!");
}
7、手機號碼
var reg=/^[1][3,4,5,7,8][0-9]{9}$/;
if(!reg.test(PhoneorTel)){
alert("手機號碼格式有誤!你確定要繼續嗎?");
}
8、郵編
var reg= /^[1-9][0-9]{5}$/;
if(!reg.test(PostCode)){
alert("郵政編碼格式有誤!")
}