本文实例总结了JS常见简单正则表达式验证功能。分享给大家供大家参考,具体如下:

下面都是一些比较常用简单的验证,像那些特殊的复杂的情况这里不进行考虑

1、验证电话号码或者手机号码

/**

* 验证电话号码(手机号码+电话号码)

* @param obj

* @returns {Boolean}

*/

function checkPhoneNum(obj){

if(/^((\d{3}-\d{8}|\d{4}-\d{7,8})|(1[3|5|7|8][0-9]{9}))$/.test(obj)){

return true;

}

}

2、验证地址(中文、英文、数字)

/**

* 验证企业地址(中文、英文、数字)

* @param obj

*/

function checkAddress(obj){

if(/^[\u4e00-\u9fa5a-zA-Z0-9]+$/.test(obj)){

return true;

}

}

3、验证用户名

/**

* 验证用户名输入格式

* @param obj

* @returns {Boolean}

*/

function checkUserName(obj){

if(/^[a-zA-Z0-9_-]{3,16}$/.test(obj)){

return true;

}

}

4、验证密码

/**

* 验证密码输入格式

* @param obj

* @returns {Boolean}

*/

function verifyPassword(obj){

if(/^[a-z0-9_-]{5,18}$/.test(obj)){

return true;

}

}

5、验证企业税号

/**

* 验证税号

* 15或者17或者18或者20位字母、数字组成

* @param obj

* @returns {Boolean}

*/

function checkTax(obj){

if(/^[A-Z0-9]{15}$|^[A-Z0-9]{17}$|^[A-Z0-9]{18}$|^[A-Z0-9]{20}$/.test(obj)){

return true;

}

}

6、验证金额

/**

* 验证金额(可验证 大于等于零,小于等于99999999.99 的数字)

* @param obj

* @returns {Boolean}

*/

function checkMoney(obj){

if(/^([1-9][\d]{0,7}|0)(\.[\d]{1,2})?$/.test(obj)){

return true;

}

}

7、验证身份证号,包括大陆身份证号,和港澳台身份证号,当然这里都只是简单的规范一下,实际的像香港的身份证号最后的括号里面的校验位都是需要根据前面的

数字依据一定的加权算法算出来进行校验的,这里没有涉及到。如果需要特别精确则可以去研究一番。

/**

* 验证大陆的身份证号

* 验证身份证号

* 身份证号码为15位或18位的全数字,或者18位时前17位是数字,最后一位是校验位,可能是数字或字符X或x

* @param obj

*/

function checkIdCard(obj){

if(/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(obj)){

return true;

}

}

/**

* 验证港澳台身份证

* @param obj

*/

function checkGATIdCard(obj){

var reg1 = /^[A-Z]{1,2}[0-9]{6}[\(|\(]?[0-9A-Z][\)|\)]?$/;//香港格式1 (香港身份证号码结构:XYabcdef(z))

var reg2 = /^[A-Z][0-9]{8,12}$/;//香港格式2 (H60152555)

var reg3 = /^[1|5|7][0-9]{6}[\(|\(]?[0-9A-Z][\)|\)]?$/;//澳门,8位数,不包含出生年月 格式为 xxxxxxx(x) 注:x全为数字,无英文字母 首位数只有1、5、7字开头的

var reg4 = /^[a-zA-Z][0-9]{9}$/;//台湾:10位字母和数字

if(reg1.test(obj) || reg2.test(obj) || reg3.test(obj) || reg4.test(obj)){

return true;

}

}

下面是比较权威的验证身份证号的写法:

/**

* 身份证15位编码规则:dddddd yymmdd xx p

* dddddd:地区码

* yymmdd: 出生年月日

* xx: 顺序类编码,无法确定

* p: 性别,奇数为男,偶数为女

* 身份证18位编码规则:dddddd yyyymmdd xxx y

* dddddd:地区码

* yyyymmdd: 出生年月日

* xxx:顺序类编码,无法确定,奇数为男,偶数为女

* y: 校验码,该位数值可通过前17位计算获得

* 18位号码加权因子为(从右到左) Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2,1 ]

* 验证位 Y = [ 1, 0, X, 9, 8, 7, 6, 5, 4, 3, 2 ]

* 校验位计算公式:Y_P = mod( ∑(Ai×Wi),11 )

* i为身份证号码从右往左数的 2...18 位; Y_P为脚丫校验码所在校验码数组位置

*

*/

// 构造函数,变量为15位或者18位的身份证号码

function IdCardValidate(CardNo) {

this.Valid = false;

this.ID15 = '';

this.ID18 = '';

this.Local = '';

if (CardNo != null)

this.SetCardNo(CardNo);

}

// 设置身份证号码,15位或者18位

IdCardValidate.prototype.SetCardNo = function(CardNo) {

this.ID15 = '';

this.ID18 = '';

this.Local = '';

CardNo = CardNo.replace(" ", "");

var strCardNo;

if (CardNo.length == 18) {

pattern = /^\d{17}(\d|x|X)$/;

if (pattern.exec(CardNo) == null)

return;

strCardNo = CardNo.toUpperCase();

} else {

pattern = /^\d{15}$/;

if (pattern.exec(CardNo) == null)

return;

strCardNo = CardNo.substr(0, 6) + '19' + CardNo.substr(6, 9)

strCardNo += this.GetVCode(strCardNo);

}

this.Valid = this.CheckValid(strCardNo);

}

// 校验身份证有效性

IdCardValidate.prototype.IsValid = function() {

return this.Valid;

}

// 返回生日字符串,格式如下,1981-10-10

IdCardValidate.prototype.GetBirthDate = function() {

var BirthDate = '';

if (this.Valid)

BirthDate = this.GetBirthYear() + '-' + this.GetBirthMonth() + '-'

+ this.GetBirthDay();

return BirthDate;

}

// 返回生日中的年,格式如下,1981

IdCardValidate.prototype.GetBirthYear = function() {

var BirthYear = '';

if (this.Valid)

BirthYear = this.ID18.substr(6, 4);

return BirthYear;

}

// 返回生日中的月,格式如下,10

IdCardValidate.prototype.GetBirthMonth = function() {

var BirthMonth = '';

if (this.Valid)

BirthMonth = this.ID18.substr(10, 2);

if (BirthMonth.charAt(0) == '0')

BirthMonth = BirthMonth.charAt(1);

return BirthMonth;

}

// 返回生日中的日,格式如下,10

IdCardValidate.prototype.GetBirthDay = function() {

var BirthDay = '';

if (this.Valid)

BirthDay = this.ID18.substr(12, 2);

return BirthDay;

}

// 返回性别,1:男,0:女

IdCardValidate.prototype.GetSex = function() {

var Sex = '';

if (this.Valid)

Sex = this.ID18.charAt(16) % 2;

return Sex;

}

// 返回15位身份证号码

IdCardValidate.prototype.Get15 = function() {

var ID15 = '';

if (this.Valid)

ID15 = this.ID15;

return ID15;

}

// 返回18位身份证号码

IdCardValidate.prototype.Get18 = function() {

var ID18 = '';

if (this.Valid)

ID18 = this.ID18;

return ID18;

}

// 返回所在省,例如:上海市、浙江省

IdCardValidate.prototype.GetLocal = function() {

var Local = '';

if (this.Valid)

Local = this.Local;

return Local;

}

//获取身份证号码为18位时最后的验证位

IdCardValidate.prototype.GetVCode = function(CardNo17) {

var Wi = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1);

var Ai = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');

var cardNoSum = 0;

for (var i = 0; i < CardNo17.length; i++)

cardNoSum += CardNo17.charAt(i) * Wi[i];

var seq = cardNoSum % 11;

return Ai[seq];

}

IdCardValidate.prototype.CheckValid = function(CardNo18) {

if (this.GetVCode(CardNo18.substr(0, 17)) != CardNo18.charAt(17))

return false;

if (!this.IsDate(CardNo18.substr(6, 8)))

return false;

var aCity = {

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 (aCity[parseInt(CardNo18.substr(0, 2))] == null)

return false;

this.ID18 = CardNo18;

this.ID15 = CardNo18.substr(0, 6) + CardNo18.substr(8, 9);

this.Local = aCity[parseInt(CardNo18.substr(0, 2))];

return true;

}

//验证18位数身份证号码中的生日是否是有效生日

IdCardValidate.prototype.IsDate = function(strDate) {

var r = strDate.match(/^(\d{1,4})(\d{1,2})(\d{1,2})$/);

if (r == null)

return false;

var d = new Date(r[1], r[2] - 1, r[3]);

return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[2] && d

.getDate() == r[3]);

}

把上面的代码放到一个js文件中,然后在(jsp)页面中引入该js文件,再调用即可

var checkIdCard = new IdCardValidate(id_card);

if(!checkIdCard.IsValid()){

alert('您输入的身份证格式不正确!');

return;

}

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

希望本文所述对大家JavaScript程序设计有所帮助。

正则 纳税号_JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】...相关推荐

  1. java正则验证网址_java正则表达式验证邮箱、IP地址、手机号码

    1.java验证IP地址: Matcher matcher = pattern.matcher("127.400.600.2"); //以验证127.400.600.2为例 Sys ...

  2. js正则表达式 验证手机号,email地址和邮政编码等等等等。。。

    //手机号码的验证(13开头18开头和158,159开头,共11位) var re; var ss=document.getElementById('textbox3').val; re= /^(13 ...

  3. js正则表达式 验证手机号,email地址和邮政编码

    转载自:http://hi.baidu.com/648385674/item/bac6792c843b1ef050fd878c //手机号码的验证(13开头18开头和158,159开头,共11位) v ...

  4. rtsp端口号_常见网络摄像机的端口及RTSP地址

    常见网络摄像机的端口及RTSP地址 海康威视 默认IP地址:192.168.1.64/DHCP 用户名admin 密码自己设 端口:"HTTP 端口"(默认为 80)." ...

  5. 常见的正则表达式验证(身份证、邮箱、电话验证等)

    export default {// 处理图片地址getImg:function(imgurl) {let url = ""if (imgurl) {if (imgurl.inde ...

  6. 常见的正则表达式验证(更新中)

    1.数字验证 var r = /^[0-9]*[1-9][0-9]*$/;if (r.test(stayDays) == false) {alert("天数输入有误");retur ...

  7. java正则表达式验证邮箱、IP地址、手机号码

    1.java验证IP地址: Pattern pattern = Pattern.compile("\\b((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5 ...

  8. PHP使用正则表达式验证电话号码(手机和固定电话)

    这个还不错,很有用. tel='验证的电话号码'; $isMob="/^1[3-8]{1}[0-9]{9}$/";  $isTel="/^([0-9]{3,4}-)?[0 ...

  9. wegame每次登陆都要滑动验证_wegame上号的时候一直在验证,单独用游戏上号也是这样,我的系统是win10家庭中文版,...

    展开全部 1.第一步, wegame登录到2113英5261雄联盟后,客户端始4102终显示已登录,见下图,1653转到下面内的步骤. 2.第二步,执行完上容面的操作之后,单击旁边带有三条水平线的按钮 ...

  10. 2023年微信公众号留言功能怎么开启?公众号留言功能怎么开通

    为什么我的公众号没有留言功能?2023年最新微信公众号留言功能开通手册 很多朋友想要开启公众号的留言功能,但却不知道该如何操作,本篇文章说说与其相关的知识. 公众号留言功能怎么开启? 根据微信官方给出 ...

最新文章

  1. Google提出移动端新SOTA模型MixNets:用混合深度卷积核提升精度
  2. (0072)iOS开发之UITableViewCell高度自适应探索--cell预估高度
  3. 14种东西帮你治疗口腔溃疡 - 生活至上,美容至尚!
  4. vue element table 修饰
  5. Android ListView 下拉刷新 上拉更多[实例]
  6. css中的.clearfix是什么意思?
  7. 挂载ntfs_Linux识别移动硬盘ntfs格式
  8. java 发卡平台支付_基于jsp的自动发卡平台-JavaEE实现自动发卡平台 - java项目源码...
  9. NCPC 2015 A Adjoin the Networks(好题)
  10. Quartus ii 中ROM ip核的应用
  11. 在Unity中实现简单的动画转场
  12. linux 支持7代cpu,Intel第七代cpu有哪些型号
  13. MATLAB回归分析命令——regress命令
  14. Jenkins邮箱配置中,使用SSL连接的问题
  15. JS中children与childNodes的区别
  16. Java对接混合支付、退款、提现心得
  17. android绿豆通讯录xml,Android 数据库(SQLite)【简介、创建、使用(增删改查、事务、实战演练)、数据显示控件(ListView、Adapter、实战演练)】...
  18. nodejs探秘:require加载模块的原理及代码实现
  19. Simulink仿真时间、步长、精度和解法器设置
  20. 如何向gitee开源项目提交代码

热门文章

  1. 统计字符串中数字字符、英文字符、空格符的个数
  2. FLASH PLAYER 谷歌浏览器浏览网站无法正常显示的问题
  3. “性能续航小超人”iQOO Z6系列登场:售价仅1199元起
  4. 微信公众号怎么赚钱?
  5. 删除excel中复制网页带过来的下拉框、复选框、单选框
  6. msi笔记本u盘装linux,msi微星笔记本bios设置u盘启动教程
  7. STC15单片机定时器0工作模式介绍
  8. Python如何连接数据库,一文看懂
  9. 高电压技术-名词解释题
  10. 3dmax中slice plane切割平面的作用