好的技术书籍可以帮助我们快速地成长,大部分人或多或少地受益于经典的技术书籍。在「前端大全」微信公号后台,我们经常能收到让帮忙推荐书籍的消息。这类的问题在 @前端大全 的微博 和 伯乐在线的前端小组 讨论中也不绝于耳。 6月30日,伯乐在线在「前端大全」微信公号发起了一个讨论 (注:PC端无法看到大家的评论,需要关注微信公号后,从微信才可以看到),通过这个讨论话题,在评论中分享对自己帮助很大的前端技术书籍。
(前端大全)
《JavaScript高级程序设计》+ 入门级 + 306 票
推荐语:
**恐龙:**再次预言这本书能认真看十遍着都能进bat
**阿琛:**详尽地解读了JS这门语言的各个组成部分,透彻地剖析了JS所涉及的编程思想,深入浅出地演示了丰富的JS应用实例...读完这本书你不一定就能成为前端大牛,但如果你真的能把这本书读懂,吃透,那么你离JS高手肯定不远啦!
《编写可维护的JavaScript》+ 入门级 + 185 票
推荐语:
**Master.Huoooo:**乌龟书,很薄,但从工程实践的角度谈了常见的坑,其中的工作习惯值得coder们学习
《jQuery 权威指南》+ 入门级 + 132 票
推荐语:
**言楓:**全面介绍了jQuery 各个方法的使用,适合有JavaScript基础的入门
《Javascript语言精粹》/ 蝴蝶书 + 入门级 + 97 票
推荐语:
**宵伯特:**集 JS 之精华,弃其糟粕,人手一本,前端必备
《锋利的jQuery》+ 入门级 + 91
推荐语:
**Arron:**学习jQuery必备书籍,不能错过
**陶宇:**前后台通用快速使用jQuery,必备良书。
《JavaScript DOM 编程艺术(第二版)》+ 入门级 + 131 票
推荐语:
**SAVEKAI:**这本书的讲解方式非常亲切,人情味十足,初学者的福音。看完也能看看蝴蝶书。
**荣锋:**度过菜鸟阶段就会更多考虑性能和优化了《高性能 JavaScript》,当然还有其他好书这只是我的一个经历
《学习 JavaScript 数据结构与算法》+ 入门级 + 31
推荐语:
**微笑的鱼:**很薄的一本书,很详细的讲解了使用js实现常用的数据结构和算法,对于更高效的使用js很有帮助。
《Understanding ECMAScript 6》+ 入门级 + 58
推荐语:
蒋熙**:**JS高程作者写的关于ES6的,感觉还不错哦
《JavaScript忍者秘籍》+ 进阶级 + 48
推荐语:
向往**:**这本书是jQuery库创始人编写的一本深入剖析JavaScript语言的书 对JavaScript语言的重要部分(函数、闭包和原型)进行深入、全面的介绍,以及讲述跨浏览器代码如何编写
《高性能 JavaScript》+ 进阶级 + 39
推荐语:
**椰子船长:**各种手段优化javascript
《ECMAScript 6 标准入门》+ 进阶级 + 38
推荐语:
刘传宗**:**ES6让JavaScript如虎添翼,编程体验更佳,阮一峰前辈的力作
《Build Your Own AngularJS》+ 进阶级 + 37
推荐语:
少白**:**手把手教你撸出个angularjs框架,详细剖析原理和实现
《Effective JavaScript:编写高质量JavaScript代码的68个有效方法》+ 进阶级 + 35
推荐语:
hzhang**:**细说了编程中容易忽略的细枝末节!
《你不知道的 JavaScript》+ 进阶级 + 46
推荐语:
**undefined:肯定没入门级的书让你成长的那么快,但是两本书(上册+下册)能让你更深入的理解 JS 机制,对项目有个良好的把控,推荐入门后的人看。 Yates💤 :**详细的讲述了this,作用域,闭包,原型链等等,把js中比较难理解的部分用例子和通俗的语言讲解出来。
《Javascript王者归来》+ 进阶级 + 30
推荐语:
李 Lee**:**每次阅读都有新发现
《单页web应用:JavaScript 从前端到后端》+ 进阶级 + 18
推荐语:
**伟球迷:**通过这本书的指引了解前后端如何一起构建一个单页应用,对前端来说,也能了解一些前端以外的东西
《JavaScript 设计模式》+ 进阶级 + 15
推荐语:
**窝窝:**本书介绍了十几种常用的设计模式,我觉得是理解别人代码之前必读的书,技巧非常多,值得多看。
《HTML5 与 CSS3 基础教程》+ 入门级 + 12
推荐语:
砖头与少年**:**就是这本书把我带入前端的,非常适合初学前端的人看,浅显易懂,有配套代码!
《深入浅出 HTML 与 CSS》+ 入门级 + 72
推荐语:
**猕猴桃:**就是它把我骗进前端的
周xj.com**:**纯小白的我第一次买的。懂了挺多。
《CSS揭秘》+ 进阶级 + 37
推荐语:
飛魚**:**这本书讲了很多CSS的技巧,看完之后你会拍着脑袋说原来CSS还有这么多你不知道的东西。
《HTML5 权威指南》+ 进阶级 + 54
推荐语:
陈军军**:**系统、全面,没有高深的用法,比较简单,如果对应用要求一般,这本书的知识完全能够应付过来,辅佐以js语言精粹,完全足够
《编写高质量代码:Web前端开发修炼之道》+ 进阶级 + 83 票
推荐语:
**jeremy•lee:**虽然是进阶级,但推荐稍有一点基础就开始阅读此书,在里边能找到好多你当下的一些小疑问,有好多技巧,包括团队配合下开发的技巧。能修正好多在开发过程中犯下的陋习,强烈推荐!
《精通正则表达式》+ 进阶级 + 68
一、什么是正则表达式?
简单的说:正则表达式(Regular Expression)是一种处理字符串匹配的语言;
正则表达式描述了一种字符串匹配的模式,可以用来检查一个字符串是否含有某种子串,对匹配到的子串进行“取出”或“替换”操作。
二、正则表达式的应用
正则表达式在实际的开发过程中非常实用,能够快速解决一些复杂的字符串处理问题,下面我对正则表达式的应用做一些简单分类:
第一种:数据验证
比如,你要验证一个字符串是否是正确的EMail,Telphone,Ip等等,那么采用正则表达式就好非常方便。
第二种:内容查找
比如,你要抓取一个网页的图片,那么你肯定要找到标签,这时候用正则表达式就可以精准的匹配到。
第三种:内容替换
比如,你要把手机号码中间四位隐藏掉变成这种模式,123***4567,那么采用正则表达式也会非常方便。
三、正则表达式有哪些内容
下面我将简单的介绍一下正则表达式:
1、 正则表达式的几个重要的概念
•子表达式:在正则表达式中,如果使用"()"括起来的内容,称之为“子表达式”
•捕获:子表达式匹配到的结果会被系统放在缓冲区中,这个过程,我们称之为“捕获”
•反向引用:我们使用"\n",其中n是数字,表示引用之前某个缓冲区之间的内容,我们称之为“反向引用”
2、数量限定符
•X+ 表示:1或多个
•X 表示:0或多个
•X? 表示:0或1个
•X{n} 表示: n个
•X{n,} 表示:至少n个
•X{n,m} 表示:n至m个,贪婪原则,会尽可能匹配多个;如果在后面加个?,则为非贪婪原则
注:X表示要查找的字符
3、 字符限定符
•\d 表示:匹配一个数字字符,[0-9]
•\D 表示:匹配一个非数字字符,[^0-9]
•\w 表示:匹配包括下划线在内的单词字符,[0-9a-zA-Z_]
•\W 表示:匹配任何非单词字符,[^0-9a-zA-Z_]
•\s 表示:匹配任何空白字符,空格、回车、制表符
•\S 表示:匹配任何非空白字符
•. 表示:匹配任何单个字符
此外还有以下几种:
范围字符:[a-z]、[A-Z]、[0-9]、[0-9a-z]、[0-9a-zA-Z]
任意字符:[abcd]、[1234]
非在内的字符:[^a-z]、[^0-9]、[^abcd]
4、 定位符
•^ 表示:开头标识
•$ 表示:结尾标识
•\b 表示:单词边界
•\B 表示:非单词边界
5、转义符
•\ 用于匹配某些特殊字符
6、选择匹配符
•| 可以匹配多个规则
7、特殊用法
•(?=) : 正向预查:匹配以指定内容结束的字符串
•(?!) : 负向预查:匹配不是以指定内容结束的字符串
•(?:) : 不把选择匹配符的内容放到缓冲区
四、正则表达式在Javascript下的使用方法
在Javascript下使用正则表达式,有两种方法:
第一种方法:使用RegExp类
提供的方法有:
•test(str): 在字符串匹配是否有匹配模式的字符串,返回true/false
•exec(str): 返回匹配模式匹配到的字符串,如果有,返回相应的字符串,无,返回null;
//如果正则表达式中有子表达式,使用exec方法时
//返回的是:result[0] = 匹配结果 , result[1] = 子表达式1的匹配结果 ……
第二种方法是:使用String类
提供的方法有:
•search : 返回匹配模式的字符串出现的位置,如果没有,返回-1
•match : 返回匹配模式匹配到的字符串,如果有,返回数组,无,返回null
•replace : 将匹配模式匹配到的字符串进行替换
•split : 将字符串已匹配模式为分隔符进行字符串分隔,返回数组
五、正则表达式在PHP下的使用方法
PHP下有两种使用正则表达式的函数:
第一种是:Perl正则表达式函数
提供的方法有:
•preg_grep -- 返回与模式匹配的数组单元
•preg_match_all -- 进行全局正则表达式匹配
•preg_match -- 进行正则表达式匹配
•preg_quote -- 转义正则表达式字符
•preg_replace_callback -- 用回调函数执行正则表达式的搜索和替换
•preg_replace -- 执行正则表达式的搜索和替换
•preg_split -- 用正则表达式分割字符串
第二种是:POSIX正则表达式函数
提供的方法有:
•ereg_replace -- 替换正则表达式
•ereg -- 正则表达式匹配
•eregi_replace -- 不区分大小写替换正则表达式
•eregi -- 不区分大小写的正则表达式匹配
•split -- 用正则表达式将字符串分割到数组中
•spliti -- 用正则表达式不区分大小写将字符串分割到数组中
•sql_regcase -- 产生用于不区分大小的匹配的正则表达式
六、总结
正则表达式就是我们实现某个功能的一个工具,这个工具:
1、功能强大
正则表达式中各种限定符的不同组合会实现不同的功能,有时实现一个复杂的功能需要编写很长的正则表达式,如何能精准匹配,这就要考验一个程序员的能力了。
2、简洁方便
平常我们在进行字符串内容查找,只能进行某个特定字符串的查找,但是正则表达式可以帮助我们进行模糊查找,更快更方便,仅仅需要一个正则表达式串。
3、各种语言基本上都支持
目前如JAVA、PHP、Javascript、C#、C++等主流语言都支持正则表达式。
4、学习很简单,应用很高深
学习正则表达式很快也很简单,但是如何在实际开发中编写出高效地,精准地正则表达式,还是需要长时间的尝试和积累。
5. 个人认为这个很重要,但不需要你都会去写出来规则。但一定要了解透彻并熟知见到的规则表达式。然后,复杂的你自己需要知道是有在线工具或者安装一个tool来帮助自己实现测试自己的表达式。
########################################################################################################################### Basic Regular Expressions: Expression in general use as below:
匹配中文字符的正则表达式: [\u4e00-\u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了
匹配双字节字符(包括汉字在内):[^\x00-\xff] 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
匹配空白行的正则表达式:\n\s*\r 评注:可以用来删除空白行
匹配HTML标记的正则表达式:<(\S*?)[^>]>.?</\1>|<.*? /> 评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力
匹配首尾空白字符的正则表达式:^\s*|\s*$ 评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式
匹配Email地址的正则表达式:\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)* 评注:表单验证时很实用
匹配网址URL的正则表达式:[a-zA-z]+://[^\s]* 评注:网上流传的版本功能很有限,上面这个基本可以满足需求
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 评注:表单验证时很实用
匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7} 评注:匹配形式如 0511-4405222 或 021-87888822
匹配腾讯QQ号:[1-9][0-9]{4,} 评注:腾讯QQ号从10000开始
匹配中国邮政编码:[1-9]\d{5}(?!\d) 评注:中国邮政编码为6位数字
匹配身份证:\d{15}|\d{18} 评注:中国的身份证为15位或18位
匹配ip地址:\d+.\d+.\d+.\d+ 评注:提取ip地址时有用
匹配特定数字: ^[1-9]\d*$ //匹配正整数 ^-[1-9]\d*$ //匹配负整数 ^-?[1-9]\d*$ //匹配整数 ^[1-9]\d*|0$ //匹配非负整数(正整数 + 0) ^-[1-9]\d*|0$ //匹配非正整数(负整数 + 0) ^[1-9]\d*.\d*|0.\d*[1-9]\d*$ //匹配正浮点数 ^-([1-9]\d*.\d*|0.\d*[1-9]\d*)$ //匹配负浮点数 ^-?([1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0)$ //匹配浮点数 ^[1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0$ //匹配非负浮点数(正浮点数 + 0) ^(-([1-9]\d*.\d*|0.\d*[1-9]\d*))|0?.0+|0$ //匹配非正浮点数(负浮点数 + 0) 评注:处理大量数据时有用,具体应用时注意修正
匹配特定字符串: ^[A-Za-z]+$ //匹配由26个英文字母组成的字符串 ^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串 ^[a-z]+$ //匹配由26个英文字母的小写组成的字符串 ^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串 ^\w+$ //匹配由数字、26个英文字母或者下划线组成的字符串
############################################################################################################################# From http://www.jb51.net, 51脚本之家
1.验证数字: 只能输入1个数字
表达式 ^\d$ 描述 匹配一个数字 匹配的例子 0,1,2,3 不匹配的例子
2.只能输入n个数字 表达式 ^\d{n}$ 例如^\d{8}$ 描述 匹配8个数字 匹配的例子 12345678,22223334,12344321 不匹配的例子
3.只能输入至少n个数字 表达式 ^\d{n,}$ 例如^\d{8,}$ 描述 匹配最少n个数字 匹配的例子 12345678,123456789,12344321 不匹配的例子
4.只能输入m到n个数字 表达式 ^\d{m,n}$ 例如^\d{7,8}$ 描述 匹配m到n个数字 匹配的例子 12345678,1234567 不匹配的例子 123456,123456789
5.只能输入数字 表达式 ^[0-9]*$ 描述 匹配任意个数字 匹配的例子 12345678,1234567 不匹配的例子 E,清清月儿
6.只能输入某个区间数字 表达式 ^[12-15]$ 描述 匹配某个区间的数字 匹配的例子 12,13,14,15 不匹配的例子
7.只能输入0和非0打头的数字 表达式 ^(0|[1-9][0-9]*)$ 描述 可以为0,第一个数字不能为0,数字中可以有0 匹配的例子 12,10,101,100 不匹配的例子 01,清清月儿,http://blog.csdn.net/21aspnet
8.只能输入实数 表达式 ^[-+]?\d+(.\d+)?$ 描述 匹配实数 匹配的例子 18,+3.14,-9.90 不匹配的例子 .6,33s,67-99
9.只能输入n位小数的正实数 表达式 ^[0-9]+(.[0-9]{n})?$以^[0-9]+(.[0-9]{2})?$为例 描述 匹配n位小数的正实数 匹配的例子 2.22 不匹配的例子 2.222,-2.22,http://blog.csdn.net/21aspnet
10.只能输入m-n位小数的正实数 表达式 ^[0-9]+(.[0-9]{m,n})?$以^[0-9]+(.[0-9]{1,2})?$为例 描述 匹配m到n位小数的正实数 匹配的例子 2.22,2.2 不匹配的例子 2.222,-2.2222,http://blog.csdn.net/21aspnet
11.只能输入非0的正整数 表达式 ^+?[1-9][0-9]*$ 描述 匹配非0的正整数 匹配的例子 2,23,234 不匹配的例子 0,-4,
12.只能输入非0的负整数 表达式 ^-[1-9][0-9]*$ 描述 匹配非0的负整数 匹配的例子 -2,-23,-234 不匹配的例子 0,4,
13.只能输入n个字符 表达式 ^.{n}$ 以^.{4}$为例 描述 匹配n个字符,注意汉字只算1个字符 匹配的例子 1234,12we,123清,清清月儿 不匹配的例子 0,123,123www,http://blog.csdn.net/21aspnet/
14.只能输入英文字符 表达式 ^.[A-Za-z]+$为例 描述 匹配英文字符,大小写任意 匹配的例子 Asp,WWW, 不匹配的例子 0,123,123www,http://blog.csdn.net/21aspnet/
15.只能输入大写英文字符 表达式 ^.[A-Z]+$为例 描述 匹配英文大写字符 匹配的例子 NET,WWW, 不匹配的例子 0,123,123www,
16.只能输入小写英文字符 表达式 ^.[a-z]+$为例 描述 匹配英文大写字符 匹配的例子 asp,csdn 不匹配的例子 0,NET,WWW,
17.只能输入英文字符+数字 表达式 ^.[A-Za-z0-9]+$为例 描述 匹配英文字符+数字 匹配的例子 1Asp,W1W1W, 不匹配的例子 0,123,123,www,http://blog.csdn.net/21aspnet/
18.只能输入英文字符/数字/下划线 表达式 ^\w+$为例 描述 匹配英文字符或数字或下划线 匹配的例子 1Asp,WWW,12,1_w 不匹配的例子 3#,2-4,w#$,http://blog.csdn.net/21aspnet/
19.密码举例 表达式 ^.[a-zA-Z]\w{m,n}$ 描述 匹配英文字符开头的m-n位字符且只能数字字母或下划线 匹配的例子 不匹配的例子
20.验证首字母大写 表达式 \b[^\Wa-z0-9_][^\WA-Z0-9_]*\b 描述 首字母只能大写 匹配的例子 Asp,Net 不匹配的例子 http://blog.csdn.net/21aspnet/
21.验证网址(带?id=中文)VS.NET2005无此功能 表达式 ^http://([\w-]+(.[\w-]+)+(/[\w- ./?%&=\u4e00-\u9fa5]*)?)?$
描述 验证带?id=中文 匹配的例子 http://blog.csdn.net/21aspnet/, http://blog.csdn.net?id=清清月儿 不匹配的例子
22.验证汉字 表达式 ^[\u4e00-\u9fa5]{0,}$ 描述 只能汉字 匹配的例子 清清月儿 不匹配的例子 http://blog.csdn.net/21aspnet/
23.验证QQ号 表达式 [0-9]{5,9} 描述 5-9位的QQ号 匹配的例子 10000,123456 不匹配的例子 10000w,http://blog.csdn.net/21aspnet/
24.验证电子邮件(验证MSN号一样) 表达式 \w+([-+.']\w+)@\w+([-.]\w+).\w+([-.]\w+)* 描述 注意MSN用非hotmail.com邮箱也可以 匹配的例子 aaa@msn.com 不匹配的例子 111@1. http://blog.csdn.net/21aspnet/
25.验证身份证号(粗验,最好服务器端调类库再细验证) 表达式 ^1-9[xX0-9]$ 描述 匹配的例子 15或者18位的身份证号,支持带X的 不匹配的例子 http://blog.csdn.net/21aspnet/
26.验证手机号(包含159,不包含小灵通) 表达式 ^13[0-9]{1}[0-9]{8}|^15[9]{1}[0-9]{8} 描述 包含159的手机号130-139 匹配的例子 139XXXXXXXX 不匹配的例子 140XXXXXXXX,http://blog.csdn.net/21aspnet/
27.验证电话号码号(很复杂,VS.NET2005给的是错的) 表达式(不完美) 方案一 (((\d{3})|\d{3}-)|((\d{4})|\d{4}-))?(\d{8}|\d{7}) 方案二 (^[0-9]{3,4}-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^([0-9]{3,4})[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$) 支持手机号但也不完美 描述 上海:02112345678 3+8位 上海:021-12345678 上海:(021)-12345678 上海:(021)12345678 郑州:03711234567 4+7位 杭州:057112345678 4+8位 还有带上分机号,国家码的情况 由于情况非常复杂所以不建议前台做100%验证,到目前为止似乎也没有谁能写一个包含所有的类型,其实有很多情况本身就是矛盾的。 如果谁有更好的验证电话的请留言
匹配的例子 不匹配的例子
28.验证护照 表达式 (P\d{7})|G\d{8})
描述 验证P+7个数字和G+8个数字 匹配的例子 不匹配的例子 清清月儿,http://blog.csdn.net/21aspnet/
29.验证IP 表达式 ^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]).(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0).(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0).(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$
描述 验证IP 匹配的例子 192.168.0.1 222.234.1.4 不匹配的例子
30.验证域 表达式 ^[a-zA-Z0-9]+([a-zA-Z0-9-.]+)?.s|)$
描述 验证域 匹配的例子 csdn.net baidu.com it.com.cn 不匹配的例子 192.168.0.1
31.验证信用卡 表达式 ^((?:4\d{3})|(?:5[1-5]\d{2})|(?:6011)|(?:3[68]\d{2})|(?:30[012345]\d))[ -]?(\d{4})[ -]?(\d{4})[ -]?(\d{4}|3[4,7]\d{13})$
描述 验证VISA卡,万事达卡,Discover卡,美国运通卡 匹配的例子 不匹配的例子
32.验证ISBN国际标准书号 表达式 ^(\d[- ]*){9}[\dxX]$
描述 验证ISBN国际标准书号 匹配的例子 7-111-19947-2 不匹配的例子
33.验证GUID全球唯一标识符 表达式 ^[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}$
描述 格式8-4-4-4-12 匹配的例子 2064d355-c0b9-41d8-9ef7-9d8b26524751 不匹配的例子
34.验证文件路径和扩展名 表达式 ^([a-zA-Z]:|\)\([^\\]+\)*[^\/:*?"<>|]+.txt(l)?$
描述 检查路径和文件扩展名 匹配的例子 E:\mo.txt 不匹配的例子 E:\ , mo.doc, E:\mo.doc ,http://blog.csdn.net/21aspnet/
35.验证Html颜色值 表达式 ^#?([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?$
描述 检查颜色取值 匹配的例子 #FF0000 不匹配的例子 http://blog.csdn.net/21aspnet/
^[1-9]\d*.\d*|0.\d*[1-9]\d*$
整数或者小数:^[0-9]+.{0,1}[0-9]{0,2}$
只能输入数字:"^[0-9]$"。
只能输入n位的数字:"^\d{n}$"。
只能输入至少n位的数字:"^\d{n,}$"。
只能输入m~n位的数字:。"^\d{m,n}$"
只能输入零和非零开头的数字:"^(0|[1-9][0-9])$"。
只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"。
只能输入有13位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"。
只能输入非零的正整数:"^+?[1-9][0-9]$"。
只能输入非零的负整数:"^-[1-9][]0-9"18之间,只能包含字符、数字和下划线。
验证是否含有^%&',;=?$"等字符:"[^%&',;=?$\x22]+"。
只能输入汉字:"^[\u4e00-\u9fa5]{0,}$"
验证Email地址:"^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)$"。
验证InternetURL:"^http://([\w-]+.)+[\w-]+(/[\w-./?%&=])?$"。
验证电话号码:"^((\d{3,4}-)|\d{3.4}-)?\d{7,8}$"正确格式为:"XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。
验证身份证号(15位或18位数字):"^\d{15}|\d{18}$"。
验证一年的12个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"。
验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"。
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) String.prototype.len=function(){return this.replace(/[^\x00-\xff]/g,"aa").length;}
匹配空行的正则表达式:\n[\s| ]*\r
匹配html标签的正则表达式:<(.)>(.)</(.)>|<(.)/>
匹配首尾空格的正则表达式:(^\s*)|(\s*$)
应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现,如下:
String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ""); }
利用正则表达式分解和转换IP地址:
下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序:
function IP2V(ip) { re=/(\d+).(\d+).(\d+).(\d+)/g //匹配IP地址的正则表达式 if(re.test(ip)) { return RegExp.$1Math.pow(255,3))+RegExp.$2Math.pow(255,2))+RegExp.$3255+RegExp.$41 } else { throw new Error("Not a valid IP address!") } }
不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下:
var ip="10.100.20.168" ip=ip.split(".") alert("IP值是:"+(ip[0]255255*255+ip[1]255255+ip[2]*255+ip[3]*1))
匹配Email地址的正则表达式:\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*
匹配网址URL的正则表达式:http://([\w-]+.)+[\w-]+(/[\w- ./?%&=]*)?
利用正则表达式限制网页表单里的文本框输入内容:
用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"
用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"
用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
手机号码:(^(\d{3,4}-)?\d{7,8})$|(13[0-9]{9})|(15[8-9]{9})
不会的也可以根据上面介绍的写出来了吧,只是得花点时间了。
验证数字的正则表达式集 验证数字:^[0-9]$ 验证n位的数字:^\d{n}$ 验证至少n位数字:^\d{n,}$ 验证m-n位的数字:^\d{m,n}$ 验证零和非零开头的数字:^(0|[1-9][0-9])$ 验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$ 验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$ 验证非零的正整数:^+?[1-9][0-9]$ 验证非零的负整数:^-[1-9][0-9]$ 验证非负整数(正整数 + 0) ^\d+$ 验证非正整数(负整数 + 0) ^((-\d+)|(0+))$ 验证长度为3的字符:^.{3}$ 验证由26个英文字母组成的字符串:^[A-Za-z]+$ 验证由26个大写英文字母组成的字符串:^[A-Z]+$ 验证由26个小写英文字母组成的字符串:^[a-z]+$ 验证由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$ 验证由数字、26个英文字母或者下划线组成的字符串:^\w+$ 验证用户密码:^[a-zA-Z]\w{5,17}$ 正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。 验证是否含有 ^%&',;=?$" 等字符:[^%&',;=?$\x22]+ 验证汉字:^[\u4e00-\u9fa5],{0,}$ 验证Email地址:^\w+[-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)$ 验证InternetURL:^http://([\w-]+.)+[\w-]+(/[\w-./?%&=])?$ ;^[a-zA-z]+://(w+(-w+))(.(w+(-w+)))(?S)?$ 验证电话号码:^((\d{3,4})|\d{3,4}-)?\d{7,8}$:--正确格式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。 验证身份证号(15位或18位数字):^\d{15}|\d{}18$ 验证一年的12个月:^(0?[1-9]|1[0-2])$ 正确格式为:“01”-“09”和“1”“12” 验证一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$ 正确格式为:01、09和1、31。 整数:^-?\d+$ 非负浮点数(正浮点数 + 0):^\d+(.\d+)?$ 正浮点数 ^(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9]))$ 非正浮点数(负浮点数 + 0) ^((-\d+(.\d+)?)|(0+(.0+)?))$ 负浮点数 ^(-(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9])))$ 浮点数 ^(-?\d+)(.\d+)?
Written by Jino Update: 2016年11月12日 星期六 15时33分45秒 CST
推荐语:
赵晓冬**:**看完后会感觉技能绝对上一个层次
**李航:**全端通用技能必须get
以上推荐和点赞是来自微信「前端大全」微信公号,你也可以在 PR 中,用以下格式来荐上述列表中没有出现的好书: 《书籍名称》、入门级 or 进阶级、一句话推荐语
后续我们将不断通过微信、微博和网站等来宣传这个经典前端技术书单。推荐人将一直署名在其中。如果这个经典前端技术书籍列表让你受益,请帮助通过朋友圈、微博、QQ空间等途径扩散给更多人,谢谢!