谁有C语言判断电话号码的合法性的源代码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谁有C语言判断电话号码的合法性的源代码相关的知识,希望对你有一定的参考价值。
1.判断输入是否是全数字。
输入应该是字符串类型,而不是INT
判断每一个字符是否是数字字符。
c>='0',&&c<='9'
2.判断是否是合理的电话位数
通过求字符串长度的函数来确定输入的位数
3位 紧急号码 110 112 119 120 122 114
5位 服务号码 10086 10010 95588 95533 12315
7位 普通座机 2685975
8位 普通座机 68252000
11位 (1)手机号码
(2)带区号的座机
(3)海外的电话
其他位数为非法情况
3.对于不同位数怎么处理
3,5位需要判断是否是规定的号码
需要用到的字符串比较函数 strcmp
7/8位需要判断首字符,我能为0/1
11位根据首字符来分类
‘0’开头 区分3位区号还是4位区号
需要用到求子串的函数
‘1’开头 取出前三个字符,查表看是否是合理的手机号码段
130 131 133 134 135 .。。。。。
‘4’,‘8’开头 只需要判断前三位是不是400800
其他全部非法
7/8位需要判断首字符,我能为0/1 ?
这句怎么理解?
68252000 不合法?
js判断身份证号码是不是合法有效全国通用
如果要做到全国通用。估计有点问题。毕竟身份证是与个人的信息相互对应的。除非走专业的通道去校验!!如果只是简单判断身份证是否合法有效,可以参考一下身份证号码的构造结构。
首先看看身份证是怎么构造的:
首先:
1)地区代码:表示出生地,上图为北京市朝阳区
2)出生日期:不解释,只要合理就好
3)顺序号:最后一位为奇数表示性别男,偶数性别女
4)校验位:这是系统验证比较关键的一位,由前面17位通过公式计算得出,具体公式在此不做讨论,因为其结果为数字0~9或者字母X
这些条件都知道了。
就可以开始了:
//首先最迟判断身份证号码的位数(18)var CardNumber="";//待验证的身份证号码
var iscard=/^\\d17([0-9]|X)$/;
if(iscard.text(CardNumber))
//验证身份证的"地区代码(前6位数字,这里需要搜集各个地区的代码...)"
if(这里校验地区代码)
if(这里校验出生日期)
//校验出生日期时,会牵扯到日历算法(计算某年的某月有多少天,防止用户随意输入大于31的日期)
//如果判断到这里了,就可以初步确定为"合法有效"的身份证号码了。
//因为“校验位”相对而言较复杂。如果楼主有意思。可以百度找资料。
参考技术A function checkCardId(socialNo) if(socialNo == "") alert("输入身份证号码不能为空!"); return (false); if (socialNo.length != 15 && socialNo.length != 18) alert("输入身份证号码格式不正确!"); return (false); var area=11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"; if(area[parseInt(socialNo.substr(0,2))]==null) alert("身份证号码不正确(地区非法)!"); return (false); if (socialNo.length == 15) pattern= /^\d15$/; if (pattern.exec(socialNo)==null) alert("15位身份证号码必须为数字!"); return (false); var birth = parseInt("19" + socialNo.substr(6,2)); var month = socialNo.substr(8,2); var day = parseInt(socialNo.substr(10,2)); switch(month) case '01': case '03': case '05': case '07': case '08': case '10': case '12': if(day>31) alert('输入身份证号码不格式正确!'); return false; break; case '04': case '06': case '09': case '11': if(day>30) alert('输入身份证号码不格式正确!'); return false; break; case '02': if((birth % 4 == 0 && birth % 100 != 0) || birth % 400 == 0) if(day>29) alert('输入身份证号码不格式正确!'); return false; else if(day>28) alert('输入身份证号码不格式正确!'); return false; break; default: alert('输入身份证号码不格式正确!'); return false; var nowYear = new Date().getYear(); if(nowYear - parseInt(birth)100) alert('输入身份证号码不格式正确!'); return false; return (true); var Wi = new Array( 7,9,10,5,8,4,2,1,6, 3,7,9,10,5,8,4,2,1 ); var lSum = 0; var nNum = 0; var nCheckSum = 0; for (i = 0; i < 17; ++i) if ( socialNo.charAt(i) < '0' || socialNo.charAt(i) > '9' ) alert("输入身份证号码格式不正确!"); return (false); else nNum = socialNo.charAt(i) - '0'; lSum += nNum * Wi[i]; if( socialNo.charAt(17) == 'X' || socialNo.charAt(17) == 'x') lSum += 10*Wi[17]; else if ( socialNo.charAt(17) < '0' || socialNo.charAt(17) > '9' ) alert("输入身份证号码格式不正确!"); return (false); else lSum += ( socialNo.charAt(17) - '0' ) * Wi[17]; if ( (lSum % 11) == 1 ) return true; else alert("输入身份证号码格式不正确!"); return (false); 本回答被提问者采纳
以上是关于谁有C语言判断电话号码的合法性的源代码的主要内容,如果未能解决你的问题,请参考以下文章