各种JS验证方法

本贴最后更新于 3942 天前,其中的信息可能已经事过境迁

昨天突然想起前段时间搜集了一些验证的方法,但是昨天回家太晚了,没时间写,今天写出来跟大家分享一下,

 

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
/**
 js 验证类,各种js正则验证
     1、isNull :检查输入字符串是否为空(包括全空格,"" ,null,和 "undefined") 为空返回true,否则false
     2、checkPhoneNo :验证固定电话号码,首位为零的三位或四位数字加"-",在加后边6,7,8,为数字(电话有可能是六位或八位哦)
     3、checkIdNo : 验证输入的身份证号是否正确
     4、checkBusinessRegisterNo : 检测输入的工商注册号(十四位数字加一位数字或字母X(不区分大小写))
     5、checkEmail :检测输入的邮箱地址
     6、isIP :校验ip地址的格式
     7、IsURL : 校验url的格式
     8、isInteger :检查输入对象的值是否符合整数格式
     9、isMobel :检查手机号码是否符合要求(手机号码验证,验证13系列和150-159(154除外)、180、185、186、187、188、189几种号码,长度11位)
     10、IsPostId :检查邮政编码是否符合要求(6位数字)
     11、isChinaOrNumbOrLett :检查输入字符串是否只有汉字、字母、数字组成
     12、isNumberOrLetter :检查输入字符串是否只由英文字母和数字组成
     13、checkQQ :检查QQ的格式是否正确(5到10位)
     14、checkQuote :检查输入的字符是否具有特殊字符,特殊字符包括字符包括以下字符(可以自行添加,删除)
             "~", "`", "!", "@", "#", "$", "%", "^", "&", "*",
             "{", "}", "[", "]", "(", ")",":", ";", "'", "|", 
             "\\", "<", ">", "?", "/", "<<", ">>", "||", "//",
             "admin", "administrators", "administrator", "管理员", "系统管理员",
             "select", "delete", "update", "insert", "create", 
             "drop", "alter", "trancate"
     15、checkDate :检查日期格式是否正确(2013-03-12)
     16、checkTime : 检查时间格式是否正确 (12:48:22)
     17、checkFullTime :检查全日期时间格式是否正确(2013-03-12 12:48:22)
     18、checkDecimal : 检查输入的一串字符是否为小数
     19、isHas :判断字符串str2中是否包含字符串str1 ,包含返回true 否则返回false
     20、isSame : 判断str1和str2是否一致,一致返回true 否则返回false
*/
function  Validator() {
     /**
     用途:检查输入字符串是否为空(包括全空格,null,和 "undefined")
     输入:str
     返回:
     如果全是空返回true,否则返回false
     */
     this .isNull =  function ( str ){
         if  ( str ==  ""  return  true ;
         if  ( str ==  null  return  true ;
         if  ( str ==  "undefined"  return  true ;
         var  regu =  "^[ ]+$" ;
         var  re =  new  RegExp(regu);
         return  re.test(str);
     }
     /**
     用途:检查输入电话号码是否正确
     输入:
     s:字符串
     返回:
     如果通过验证返回true,否则返回false
     格式:区号-号码
     区号-3、4位 
     号码-6、7、8位
     */
     this .checkPhoneNo =  function ( s ){
         var  regu =/^0[0-9]{2,3}-[0-9]\d{5,7}$/;
         var  re =  new  RegExp(regu);
         if  (re.test(s)){
             return  true ;
         } else {
             return  false ;
         }
     }
     /**
     用途:检查输入身份证号码是否正确
     输入:
     s:字符串
     返回:
     如果通过验证返回true,否则返回false
     * 格式: 15位or18位
     */
     this .checkIdNo =  function  ( s ){
         var  regu15 =/^(\d{8})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])(\d{3})$/;
         var  re15 =  new  RegExp(regu15);
         var  regu18 =/^(\d{6})(18|19|20)(\d{2})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])(\d{3})(\d|[xX])$/;
         var  re18 =  new  RegExp(regu18);
         if  (re15.test(s) || re18.test(s)) {
             return  true ;
         } else {
             return  false ;
         }
     }
     /**
     工商注册号
     *  格式: 15位
     */
     this .checkBusinessRegisterNo =  function  ( s ){
         var  regu =/^(\d{14})(\d|[xX])$/;
         var  re =  new  RegExp(regu);
         if  (re.test(s)) {
             return  true ;
         } else {
             return  false ;
         }
     }
     /**
     用途:检查输入的Email信箱格式是否正确
     输入:
     strEmail:字符串
     返回:
     如果通过验证返回true,否则返回false
     */
     this .checkEmail =  function  (strEmail) {
         var  emailReg = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
         if  (emailReg.test(strEmail)) {
             return  true ;
         } else {
             return  false ;
         }
     }
     /**
     用途:校验ip地址的格式
     输入:strIP:ip地址
     返回:如果通过验证返回true,否则返回false;
     */
     this .isIP =  function  (strIP) {
         if  (isNull(strIP))  return  false ;
             var  re=/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/  //匹配IP地址的正则表达式
         if (re.test(strIP))
         {
             if ( RegExp.$1 <256 && RegExp.$2<256 && RegExp.$3<256 && RegExp.$4<256)  return  true ;
         }
         return  false ;
     }
     /**
     用途:校验url的格式
     输入:urlString:url网址(以http(s)://或ftp://开头)
     返回:如果通过验证返回true,否则返回false;
     */
     this .IsURL =  function  (urlString){
         regExp = /(http[s]?|ftp):\/\/[^\/\.]+?\..+\w$/;
         if  (urlString.match(regExp))
             return  true ;
         else 
             return  false ;        
     }
     /**
     用途:检查输入对象的值是否符合整数格式
     输入:str 输入的字符串
     返回:如果通过验证返回true,否则返回false
     */
     this .isInteger =  function  ( str ){
         var  regu = /^[-]{0,1}[0-9]{1,}$/;
         return  regu.test(str);
     }
     /**
     用途:检查手机号码是否符合要求(手机号码验证,验证13系列和150-159(154除外)、180、185、186、187、188、189几种号码,长度11位)
     输入:str 输入的字符串
     返回:如果通过验证返回true,否则返回false
     */
     this .isMobel =  function  (s){     
         var  regu =/^((13\d{9})|(15[0-35-9]\d{8})|(18[05-9]\d{8}))$/;
         var  re =  new  RegExp(regu);
             if (re.test(s)){       
                 return  true ;     
             } else {     
                 return  false ;     
             }     
    
     /**
      * 用途:检查邮政编码是否符合要求(6位数字)
      * 输入:str 输入的字符串
      * 返回:如果通过验证返回true,否则返回false
      */
     this .IsPostId =  function  (str){
         var  reg=/^\d{6}$/;
         return  reg.test(str);
     }
     /**
     用途:检查输入字符串是否只有汉字、字母、数字组成
     输入:
     value:字符串
     返回:
     如果通过验证返回true,否则返回false
     */
     this .isChinaOrNumbOrLett =  function  ( s ){
         //判断是否是汉字、字母、数字组成
         var  regu =  "^[0-9a-zA-Z\u4e00-\u9fa5]+$" ;
         var  re =  new  RegExp(regu);
         if  (re.test(s)) {
             return  true ;
         } else {
             return  false ;
         }
     }
     /**
     用途:检查输入字符串是否只由英文字母和数字组成
     输入:
     s:字符串
     返回:
     如果通过验证返回true,否则返回false
     */
     this .isNumberOrLetter =  function  ( s ){
         //判断是否是数字或字母
         var  regu =  "^[0-9a-zA-Z]+$" ;
         var  re =  new  RegExp(regu);
         if  (re.test(s)) {
             return  true ;
         } else {
             return  false ;
         }
     }
     /**
      * 检查QQ的格式是否正确(5到10位)
      * 输入:str  字符串
      *  返回:true 或 flase; true表示格式正确
      */
     this .checkQQ =  function  (str){
         var  reg=/^\d{5,10}$/;
         return  reg.test(str);
     }
     /**
      * 检查输入的字符是否具有特殊字符
      * 输入:str  字符串
      * 返回:true 或 flase; true表示包含特殊字符
      * 主要用于注册信息的时候验证
      */
     this .checkQuote =  function  (str){
         var  items =  new  Array( "~" "`" "!" "@" "#" "$" "%" "^" "&" "*" "{" "}" "[" "]" "(" ")" , ":" ";" "'" "|" "\\" "<" ">" "?" "/" "<<" ">>" "||" "//" );
         items.push( "admin" "administrators" "administrator" "管理员" "系统管理员" );
         items.push( "select" "delete" "update" "insert" "create" "drop" "alter" "trancate" );
         str = str.toLowerCase();
         for  ( var  i = 0; i < items.length; i++) {
             if  (str.indexOf(items[i]) >= 0) {
                 return  true ;
             }
         }
         return  false ;
     }
     /**
      * 检查日期格式是否正确
      * 输入:str  字符串
      * 返回:true 或 flase; true表示格式正确
      * 注意:此处不能验证中文日期格式
      * 验证短日期(2007-06-05)
      */
     this .checkDate =  function  (str){
         var  value = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
         if  (value ==  null ) {
             return  false ;
         }
         else  {
             var  date =  new  Date(value[1], value[3] - 1, value[4]);
             return  (date.getFullYear() == value[1] && (date.getMonth() + 1) == value[3] && date.getDate() == value[4]);
         }
     }
     /**
      * 检查时间格式是否正确
      * 输入:str  字符串
      * 返回:true 或 flase; true表示格式正确
      * 验证时间(10:57:10)
      */
     this .checkTime =  function  (str){
         var  value = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
         if  (value ==  null ) {
             return  false ;
         }
         else  {
             if  (value[1] > 24 || value[3] > 60 || value[4] > 60) {
                 return  false
             }
             else  {
                 return  true ;
             }
         }
     }
     /**
      * 检查全日期时间格式是否正确
      * 输入:str  字符串
      * 返回:true 或 flase; true表示格式正确
      * (2007-06-05 10:57:10)
      */
     this .checkFullTime =  function  (str){
         var  value = str.match(/^(?:19|20)[0-9][0-9]-(?:(?:0[1-9])|(?:1[0-2]))-(?:(?:[0-2][1-9])|(?:[1-3][0-1])) (?:(?:[0-2][0-3])|(?:[0-1][0-9])):[0-5][0-9]:[0-5][0-9]$/);
         if  (value ==  null ) {
             return  false ;
         }
         else  {
             return  true ;
         }
     }
     /**
      * 检查输入的一串字符是否为小数
      * 输入:str  字符串
      * 返回:true 或 flase; true表示为小数
      */
     this .checkDecimal =  function  (str){
         var  regu =  /^-?\d+(\.\d+)$/;
         var  re =  new  RegExp(regu);
         if (re.test(str)){       
             return  true ;     
         } else {     
             return  false ;     
         }   
     }
     /**
     用途:判断字符串str2中是否包含字符串str1
     输入:str1 字符串,str2 字符串
     返回:包含返回true 否则返回false
     */
     this .isHas =  function (str1,str2){
         if  (str2.indexOf(str1) >= 0) {
                 return  true ;
             } else {
                 return  false ;
             }
     }
     /**
     用途:判断字符串str1和字符串str2是否一致
     输入:str1 字符串,str2 字符串
     返回:一致返回true 否则返回false
     */
     this .isSame =  function (str1,str2){
         if (str1==str2){
             return  true
         } else {
             return  false
         }
     }
}
var  Validator =  new  Validator();

  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    247 引用 • 1347 回帖
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    710 引用 • 1173 回帖 • 176 关注
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 745 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖 • 1 关注
  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    27 引用 • 66 回帖
  • Thymeleaf

    Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。

    11 引用 • 19 回帖 • 317 关注
  • V2EX

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    17 引用 • 236 回帖 • 421 关注
  • 脑图

    脑图又叫思维导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种实用性的思维工具。

    21 引用 • 58 回帖
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖
  • 阿里云

    阿里云是阿里巴巴集团旗下公司,是全球领先的云计算及人工智能科技公司。提供云服务器、云数据库、云安全等云计算服务,以及大数据、人工智能服务、精准定制基于场景的行业解决方案。

    89 引用 • 345 回帖 • 2 关注
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖 • 1 关注
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    77 引用 • 1741 回帖
  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 398 关注
  • BND

    BND(Baidu Netdisk Downloader)是一款图形界面的百度网盘不限速下载器,支持 Windows、Linux 和 Mac,详细介绍请看这里

    107 引用 • 1281 回帖 • 19 关注
  • CAP

    CAP 指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。

    11 引用 • 5 回帖 • 563 关注
  • 京东

    京东是中国最大的自营式电商企业,2015 年第一季度在中国自营式 B2C 电商市场的占有率为 56.3%。2014 年 5 月,京东在美国纳斯达克证券交易所正式挂牌上市(股票代码:JD),是中国第一个成功赴美上市的大型综合型电商平台,与腾讯、百度等中国互联网巨头共同跻身全球前十大互联网公司排行榜。

    14 引用 • 102 回帖 • 401 关注
  • PWL

    组织简介

    用爱发电 (Programming With Love) 是一个以开源精神为核心的民间开源爱好者技术组织,“用爱发电”象征开源与贡献精神,加入组织,代表你将遵守组织的“个人开源爱好者”的各项条款。申请加入:用爱发电组织邀请帖
    用爱发电组织官网:https://programmingwithlove.stackoverflow.wiki/

    用爱发电组织的核心驱动力:

    • 遵守开源守则,体现开源&贡献精神:以分享为目的,拒绝非法牟利。
    • 自我保护:使用适当的 License 保护自己的原创作品。
    • 尊重他人:不以各种理由、各种漏洞进行未经允许的抄袭、散播、洩露;以礼相待,尊重所有对社区做出贡献的开发者;通过他人的分享习得知识,要留下足迹,表示感谢。
    • 热爱编程、热爱学习:加入组织,热爱编程是首当其要的。我们欢迎热爱讨论、分享、提问的朋友,也同样欢迎默默成就的朋友。
    • 倾听:正确并恳切对待、处理问题与建议,及时修复开源项目的 Bug ,及时与反馈者沟通。不抬杠、不无视、不辱骂。
    • 平视:不诋毁、轻视、嘲讽其他开发者,主动提出建议、施以帮助,以和谐为本。只要他人肯努力,你也可能会被昔日小看的人所超越,所以请保持谦虚。
    • 乐观且活跃:你的努力决定了你的高度。不要放弃,多年后回头俯瞰,才会发现自己已经成就往日所仰望的水平。积极地将项目开源,帮助他人学习、改进,自己也会获得相应的提升、成就与成就感。
    1 引用 • 487 回帖 • 6 关注
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 9 关注
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 549 关注
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1083 引用 • 3461 回帖 • 287 关注
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    531 引用 • 3528 回帖
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 3 关注
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 15 关注
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    915 引用 • 931 回帖
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    69 引用 • 190 回帖 • 492 关注
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    523 引用 • 4581 回帖 • 692 关注
  • 安全

    安全永远都不是一个小问题。

    189 引用 • 813 回帖 • 3 关注
  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    5 引用 • 15 回帖 • 223 关注
  • CSS

    CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

    180 引用 • 447 回帖 • 1 关注