javascript
JS验证身份证、营业执照、组织机构代码等
/**檢驗身份證號碼是否合法
15位身份證號碼組成:ddddddyymmddxxs共15位
其中:
dddddd為6位的地方代碼,根據這6位可以獲得該身份證號所在地。
yy為2位的年份代碼,是身份證持有人的出身年份。
mm為2位的月份代碼,是身份證持有人的出身月份。
dd為2位的日期代碼,是身份證持有人的出身日。
xx為2位的順序碼,這個是隨機數。
s為1位的性別代碼,奇數代表男性,偶數代表女性。
18位身份證號碼組成:ddddddyyyymmddxxsp共18位
其中:
其他部分都和15位的相同。年份代碼由原來的2位升級到4位。最后一位為校驗位。
校驗規則是:
(1)十七位數字本體碼加權求和公式
S = Sum(Ai * Wi), i = 0, … , 16 ,先對前17位數字的權求和
Ai:表示第i位置上的身份證號碼數字值
Wi:表示第i位置上的加權因子
Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
(2)計算模
Y = mod(S, 11)
(3)通過模得到對應的校驗碼
Y: 0 1 2 3 4 5 6 7 8 9 10
校驗碼: 1 0 X 9 8 7 6 5 4 3 2
也就是說,如果得到余數為1則最后的校驗位p應該為對應的0.如果校驗位不是,則該身份證號碼不正確。
**/
function isValidIdCard(idCard){
var ret=false;
var w=[7 ,9,10,5,8,4,2, 1,6, 3, 7, 9 ,10, 5 ,8 ,4, 2];
if(idCard.length == 18){
//身份證號碼長度必須為18,只要校驗位正確就算合法
var crc=idCard.substring(17);
var a =new Array();
var sum=0;
for(var i=0;i<17;i++){
a.push(idCard.substring(i,i+1));
sum+=parseInt(a[i],10)*parseInt(w[i],10);
//alert(a[i]);
}
sum%=11;
var res=”-1″;
switch (sum){
case 0:{
res=”1″;
break;
}
case 1:{
res=”0″;
break;
}
case 2:{
res=”X”;
break;
}
case 3:{
res=”9″;
break;
}
case 4:{
res=”8″;
break;
}
case 5:{
res=”7″;
break;
}
case 6:{
res=”6″;
break;
}
case 7:{
res=”5″;
break;
}
case 8:{
res=”4″;
break;
}
case 9:{
res=”3″;
break;
}
case 10:{
res=”2″;
break;
}
}
if(crc.toLowerCase()==res.toLowerCase()){
ret=true;
}
//ret=true;
}
/*
else if(idCard.length == 15){
//15位的身份證號,只驗證是否全為數字
var pattern = /\d/;
ret=pattern.test(idCard);
}*/
return ret;
}
/**
*驗證圖片類型(jpg,jpeg,png,gif)
*/
function isValidImageType(fileName){
var temp=fileName.split(“.”);
var length=temp.length;
//alert(“length= “+length+”,name=”+temp[length-1]);
var ret=false;
var typeName=temp[length-1];//fileName.substring(fileName.length-4);
//alert(“typeName=”+typeName);
typeName=typeName.toLowerCase();
//alert(“typeName=”+typeName);
if(“”==fileName){
ret=true;
}
//alert(“fileName=”+fileName+”,typeName=”+typeName);
else if(“jpg”==typeName || “png”==typeName || “gif”==typeName || “jpeg”==typeName){
ret=true;
}
return ret;
}
/**
*驗證組織機構代碼是否合法:組織機構代碼為8位數字或者拉丁字母+“-”+1位校驗碼。
*驗證最后那位校驗碼是否與根據公式計算的結果相符。
*編碼規則請參看
*http://wenku.baidu.com/view/d615800216fc700abb68fc35.html
*/
function isValidOrgCode(orgCode){
return “”==orgCode || orgCode.length==10;
//return true;
/*var ret=false;
var codeVal = ["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];
var intVal = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35];
var crcs =[3,7,9,10,5,8,4,2];
if(!(“”==orgCode) && orgCode.length==10){
var sum=0;
for(var i=0;i<8;i++){
var codeI=orgCode.substring(i,i+1);
var valI=-1;
for(var j=0;j<codeVal.length;j++){
if(codeI==codeVal[j]){
valI=intVal[j];
break;
}
}
sum+=valI*crcs[i];
}
var crc=11- (sum % 11);
switch (crc){
case 10:{
crc=”X”;
break;
}default:{
break;
}
}
//alert(“crc=”+crc+”,inputCrc=”+orgCode.substring(9));
if(crc==orgCode.substring(9)){
ret=true;
}
}else if(“”==orgCode){
ret=true;
}
return ret;*/
}
/**
*驗證營業執照是否合法:營業執照長度須為15位數字,前14位為順序碼,
*最后一位為根據GB/T 17710 1999(ISO 7064:1993)的混合系統校驗位生成算法
*計算得出。此方法即是根據此算法來驗證最后一位校驗位是否政正確。如果
*最后一位校驗位不正確,則認為此營業執照號不正確(不符合編碼規則)。
*以下說明來自于網絡:
*我國現行的營業執照上的注冊號都是15位的,不存在13位的,從07年開始國
*家進行了全面的注冊號升級就全部都是15位的了,如果你看見的是13位的注
*冊號那肯定是假的。
*15位數字的含義,代碼結構工商注冊號由14位數字本體碼和1位數字校驗碼
*組成,其中本體碼從左至右依次為:6位首次登記機關碼、8位順序碼。
* 一、前六位代表的是工商行政管理機關的代碼,國家工商行政管理總局用
* “100000”表示,省級、地市級、區縣級登記機關代碼分別使用6位行
* 政區劃代碼表示。設立在經濟技術開發區、高新技術開發區和保稅區
* 的工商行政管理機關(縣級或縣級以上)或者各類專業分局應由批準
* 設立的上級機關統一賦予工商行政管理機關代碼,并報國家工商行政
* 管理總局信息化管理部門備案。
* 二、順序碼是7-14位,順序碼指工商行政管理機關在其管轄范圍內按照先
* 后次序為申請登記注冊的市場主體所分配的順序號。為了便于管理和
* 賦碼,8位順序碼中的第1位(自左至右)采用以下分配規則:
* 1)內資各類企業使用“0”、“1”、“2”、“3”;
* 2)外資企業使用“4”、“5”;
* 3)個體工商戶使用“6”、“7”、“8”、“9”。
* 順序碼是系統根據企業性質情況自動生成的。
*三、校驗碼是最后一位,校驗碼用于檢驗本體碼的正確性
*/
function isValidBusCode(busCode){
return true;
/*var ret=false;
if(busCode.length==15){
var sum=0;
var s=[];
var p=[];
var a=[];
var m=10;
p[0]=m;
for(var i=0;i<busCode.length;i++){
a[i]=parseInt(busCode.substring(i,i+1),m);
s[i]=(p[i]%(m+1))+a[i];
if(0==s[i]%m){
p[i+1]=10*2;
}else{
p[i+1]=(s[i]%m)*2;
}
}
if(1==(s[14]%m)){
//營業執照編號正確!
//alert(“營業執照編號正確!”);
ret=true;
}else{
//營業執照編號錯誤!
ret=false;
//alert(“營業執照編號錯誤!”);
}
}else if(“”==busCode){
ret=true;
}
return ret;*/
}
/**
*驗證國稅稅務登記號是否合法:稅務登記證是6位區域代碼+組織機構代碼
*/
function isValidTaxCode(taxCode){
var ret=true;
if(isValidOrgCode($(“#memberBase.eOrgCode”).val())){
}
return ret;
}
/**
*驗證固定電話號碼。固定電話號碼格式為:區號-號碼
*/
function isValidPhone(phone){
var ret=false;
if(“”==phone || (/^(([0\+]\d{2,3}-)?(0\d{2,3})-)(\d{7,8})(-(\d{3,}))?/.test(phone))){
ret=true;
}
return ret;
}
總結
以上是生活随笔為你收集整理的JS验证身份证、营业执照、组织机构代码等的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java gbk编码_java 中文转G
- 下一篇: labview支持python免费_ni