JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)


Posted in Javascript onFebruary 03, 2020

有时候正则表达式可以大大提高我们的开发效率呢

比如这段校验基本日期格式的javascript代码:

let d1 = "2017/12/10";
let r1 = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
let r = d1.match(r1);
if(r == null){
  console.log("日期格式错误!");
}else{
  console.log("通过~");
}

1、校验密码强度

密码的强度必须包含大小写字母和数字的组合,不能使用特殊符号,长度在8-10之间:

^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

2、校验中文

字符串只能是中文:

^[\\u4e00-\\u9fa5]{0,}$

3、由数字,26个英文字母或下划线组成的字符串

^\\w+$

4、校验E-Mail 地址

字符串只能是中文:

[\\w!#$%&"*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&"*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?

5、校验身份证号码

15位:

^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$

18位:

^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)$

6、校验日期

“yyyy-mm-dd“ 格式的日期校验,已考虑平闰年:

^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$

7、校验金额

金额校验,精确到2位小数:

^[0-9]+(.[0-9]{2})?$

8、校验手机号

下面是国内 13、15、18开头的手机号正则表达式:

^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}$

9、判断IE的版本

^.*MSIE [5-8](?:\\.[0-9]+)?(?!.*Trident\\/[5-9]\\.0).*$

10、校验IP-v4地址

\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b

11、校验IP-v6地址

(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))

12、检查URL的前缀

if (!s.match(/^[a-zA-Z]+:\\/\\//)){s = "http://" + s;}

13、提取URL链接

^(f|ht){1}(tp|tps):\\/\\/([\\w-]+\\.)+[\\w-]+(\\/[\\w- ./?%&=]*)?

14、文件路径及扩展名校验

^(f|ht){1}(tp|tps):\\/\\/([\\w-]+\\.)+[\\w-]+(\\/[\\w- ./?%&=]*)?

15、提取Color Hex Codes

^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$

16、提取网页图片

\\< *[img][^\\\\>]*[src] *= *[\\"\\"]{0,1}([^\\"\\"\\ >]*)

17、提取页面超链接

(<a\\s*(?!.*\\brel=)[^>]*)(href="https?:\\/\\/)((?!(?:(?:www\\.)?" rel="external nofollow" .implode("|(?:www\\.)?", $follow_list)."))[^"]+)"((?!.*\\brel=)[^>]*)(?:[^>]*)>

18、查找CSS属性

^\\s*[a-zA-Z\\-]+\\s*[:]{1}\\s[a-zA-Z0-9\\s.#]+[;]{1}

19、抽取注释

<!--(.*?)-->

20、匹配HTML标签

<\\/?\\w+((\\s+\\w+(\\s*=\\s*(?:".*?"|".*?"|[\\^"">\\s]+))?)+\\s*|\\s*)\\/?>

一、校验数字的表达式

1、 数字

^[0-9]*$

2、 n位的数字

^\d{n}$

3、 至少n位的数字

^\d{n,}$

4、 m-n位的数字

^\d{m,n}$

5、 零和非零开头的数字

^(0|[1-9][0-9]*)$

6、 非零开头的最多带两位小数的数字

^([1-9][0-9]*)+(.[0-9]{1,2})?$

7、 带1-2位小数的正数或负数

^(\-)?\d+(\.\d{1,2})?$

8、 正数、负数、和小数

^(\-|\+)?\d+(\.\d+)?$

9、 有两位小数的正实数

^[0-9]+(.[0-9]{2})?$

10、 有1~3位小数的正实数

^[0-9]+(.[0-9]{1,3})?$

11、 非零的正整数

^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$

12、 非零的负整数

^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$

13、 非负整数

^\d+$ 或 ^[1-9]\d*|0$

14、 非正整数

^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$

15、 非负浮点数

^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$

16、 非正浮点数

^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$

17、 正浮点数

^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$

18、 负浮点数

^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$

19、 浮点数

^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$

二、校验字符的表达式

1、 汉字

^[\u4e00-\u9fa5]{0,}$

2、 英文和数字

^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$

3、 长度为3-20的所有字符

^.{3,20}$

4、 由26个英文字母组成的字符串

^[A-Za-z]+$

5、 由26个大写英文字母组成的字符串

^[A-Z]+$

6、 由26个小写英文字母组成的字符串

^[a-z]+$

7、 由数字和26个英文字母组成的字符串

^[A-Za-z0-9]+$

8、 由数字、26个英文字母或者下划线组成的字符串

^\w+$ 或 ^\w{3,20}$

9、 中文、英文、数字包括下划线

^[\u4E00-\u9FA5A-Za-z0-9_]+$

10、 中文、英文、数字但不包括下划线等符号

^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$

11、 可以输入含有^%&",;=?$\"等字符

[^%&",;=?$\x22]+

12、 禁止输入含有~的字符

[^~\x22]+

三、特殊需求表达式

1、 Email地址

^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

2、 域名

[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?

3、 InternetURL

[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$

4、 手机号码

^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$

5、 电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX)

^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$

6、 国内电话号码(0511-4405222、021-87888822)

\d{3}-\d{8}|\d{4}-\d{7}

7、 身份证号(15位、18位数字)

^\d{15}|\d{18}$

8、 短身份证号码(数字、字母x结尾)

^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$

9、 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线)

^[a-zA-Z][a-zA-Z0-9_]{4,15}$

10、 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线)

^[a-zA-Z]\w{5,17}$

11、 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间)

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

12、 日期格式

^\d{4}-\d{1,2}-\d{1,2}

13、 一年的12个月(01~09和1~12)

^(0?[1-9]|1[0-2])$

14、 一个月的31天(01~09和1~31)

^((0?[1-9])|((1|2)[0-9])|30|31)$

15、 钱的输入格式

1.有四种钱的表示形式我们可以接受:"10000.00" 和 "10,000.00", 和没有 "分" 的 "10000" 和 "10,000"

^[1-9][0-9]*$

2.这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式

^(0|[1-9][0-9]*)$

3.一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号

^(0|-?[1-9][0-9]*)$

4.这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧.下面我们要加的是说明可能的小数部分

^[0-9]+(.[0-9]+)?$

5.必须说明的是,小数点后面至少应该有1位数,所以"10."是不通过的,但是 "10" 和 "10.2" 是通过的

^[0-9]+(.[0-9]{2})?$

6.这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样

^[0-9]+(.[0-9]{1,2})?$

7.这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样

^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$

8.1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须

^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$

16、 xml文件

^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$

17、 中文字符的正则表达式

[\u4e00-\u9fa5]

18、 双字节字符

[^\x00-\xff] (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))

19、 空白行的正则表达式

\n\s*\r (可以用来删除空白行)

20、 HTML标记的正则表达式

<(\S*?)[^>]*>.*?</\1>|<.*? /> (网上流传的版本太糟糕,上面这个也仅仅能部分,对于复杂的嵌套标记依旧无能为力)

21、 首尾空白字符的正则表达式

^\s*|\s*$或(^\s*)|(\s*$) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)

22、 腾讯QQ号

[1-9][0-9]{4,} (腾讯QQ号从10000开始)

更多关于JS常用正则表达式的文章大家可以看看下面的相关链接

Javascript 相关文章推荐
Javascript 不能释放内存.
Sep 07 Javascript
js实现ASP分页函数 HTML分页函数
Sep 22 Javascript
A标签中通过href和onclick传递的this对象实现思路
Apr 19 Javascript
js实现touch移动触屏滑动事件
Apr 17 Javascript
javascript伸缩型菜单实现代码
Nov 16 Javascript
基于jQuery的ajax方法封装
Jul 14 Javascript
js设置文字颜色的方法示例
Dec 30 Javascript
js面向对象编程总结
Feb 16 Javascript
使用FormData实现上传多个文件
Dec 04 Javascript
JavaScript实现无限级递归树的示例代码
Mar 29 Javascript
React+TypeScript+webpack4多入口配置详解
Aug 08 Javascript
微信小程序 云开发模糊查询实现解析
Sep 02 Javascript
微信小程序实现上传多个文件 超过10个
Mar 30 #Javascript
微信小程序实现同时上传多张图片
Feb 03 #Javascript
解决小程序无法触发SESSION问题
Feb 03 #Javascript
vue组件创建的三种方式小结
Feb 03 #Javascript
Vuex模块化应用实践示例
Feb 03 #Javascript
微信小程序8种数据通信的方式小结
Feb 03 #Javascript
使用js实现单链解决前端队列问题的方法
Feb 03 #Javascript
You might like
WINDOWS 2000下使用ISAPI方式安装PHP
2006/09/05 PHP
php下把数组保存为文件格式的实例应用
2010/02/08 PHP
PHP调用JAVA的WebService简单实例
2014/03/11 PHP
PHP利用APC模块实现大文件上传进度条的方法
2015/10/29 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
2016/10/14 PHP
PHP实现验证码校验功能
2017/11/16 PHP
Yii2.0框架behaviors方法使用实例分析
2019/09/30 PHP
解决laravel session失效的问题
2019/10/14 PHP
JS子父窗口互相操作取值赋值的方法介绍
2013/05/11 Javascript
浅析JavaScript中的常用算法与函数
2013/11/21 Javascript
详解Javascript 装载和执行
2014/11/17 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
2014/12/18 Javascript
快速学习JavaScript的6个思维技巧
2015/10/13 Javascript
跟我学习javascript的函数调用和构造函数调用
2015/11/16 Javascript
Bootstrap3制作自己的导航栏
2016/05/12 Javascript
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
微信小程序 新建登录页并实现tabBar隐藏
2017/06/13 Javascript
详解vue express启动数据服务
2017/07/05 Javascript
vue中多路由表头吸顶实现的几种布局方式
2019/04/12 Javascript
学习LayUI时自研的表单参数校验框架案例分析
2019/07/29 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
微信小程序swiper禁止用户手动滑动代码实例
2019/08/23 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
2019/11/18 Javascript
JavaScript中变量提升机制示例详解
2019/12/27 Javascript
Python解释执行原理分析
2014/08/22 Python
python关闭windows进程的方法
2015/04/18 Python
对python的文件内注释 help注释方法
2018/05/23 Python
实例讲解Python中整数的最大值输出
2019/03/17 Python
浅谈Python基础—判断和循环
2019/03/22 Python
keras多显卡训练方式
2020/06/10 Python
Tensorflow使用Anaconda、pycharm安装记录
2020/07/29 Python
python selenium xpath定位操作
2020/09/01 Python
Python join()函数原理及使用方法
2020/11/14 Python
巴西体育用品商店:Lojão dos Esportes
2018/07/21 全球购物
《中华少年》教学反思
2014/02/15 职场文书
三月学雷锋活动总结
2014/06/26 职场文书