Skip to content

Jino-Yang/awesome-web-dev-books

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 

Repository files navigation

awesome-web-dev-books

如果有人让你推荐前端技术书,请让他看这个列表

前言

好的技术书籍可以帮助我们快速地成长,大部分人或多或少地受益于经典的技术书籍。在「前端大全」微信公号后台,我们经常能收到让帮忙推荐书籍的消息。这类的问题在 @前端大全 的微博伯乐在线的前端小组 讨论中也不绝于耳。 6月30日,伯乐在线在「前端大全」微信公号发起了一个讨论 (注:PC端无法看到大家的评论,需要关注微信公号后,从微信才可以看到),通过这个讨论话题,在评论中分享对自己帮助很大的前端技术书籍。

 

(前端大全)

JavaScript

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 & CSS

HTML5 与 CSS3 基础教程》+ 入门级 + 12

推荐语:

砖头与少年**:**就是这本书把我带入前端的,非常适合初学前端的人看,浅显易懂,有配套代码!

深入浅出 HTML 与 CSS》+ 入门级 + 72

推荐语:

**猕猴桃:**就是它把我骗进前端的

周xj.com**:**纯小白的我第一次买的。懂了挺多。

CSS揭秘》+ 进阶级 + 37

推荐语:

飛魚**:**这本书讲了很多CSS的技巧,看完之后你会拍着脑袋说原来CSS还有这么多你不知道的东西。

HTML5 权威指南》+ 进阶级 + 54

推荐语:

陈军军**:**系统、全面,没有高深的用法,比较简单,如果对应用要求一般,这本书的知识完全能够应付过来,辅佐以js语言精粹,完全足够

综合类

编写高质量代码:Web前端开发修炼之道》+ 进阶级 + 83 票

推荐语:

**jeremy•lee:**虽然是进阶级,但推荐稍有一点基础就开始阅读此书,在里边能找到好多你当下的一些小疑问,有好多技巧,包括团队配合下开发的技巧。能修正好多在开发过程中犯下的陋习,强烈推荐!

精通正则表达式》+ 进阶级 + 68

Online regex tools

一、什么是正则表达式? 简单的说:正则表达式(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"$。 只能输入长度为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}$"正确格式为:以字母开头,长度在618之间,只能包含字符、数字和下划线。 验证是否含有^%&',;=?$"等字符:"[^%&',;=?$\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空间等途径扩散给更多人,谢谢!

About

如果有人让你推荐前端技术书,请让他看这个列表

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published