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 相关文章推荐
JS数学函数Exp使用说明
Aug 09 Javascript
Jquery实现三层遍历删除功能代码
Apr 23 Javascript
js获取某月的最后一天日期的简单实例
Jun 22 Javascript
浅谈JavaScript中指针和地址
Jul 26 Javascript
在web中js实现类似excel的表格控件
Sep 01 Javascript
jquery 属性选择器(匹配具有指定属性的元素)
Sep 06 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
Nov 16 Javascript
angularjs实现上拉加载和下拉刷新数据功能
Jun 12 Javascript
weebox弹出窗口不居中显示的解决方法
Nov 27 Javascript
Angular 如何使用第三方库的方法
Apr 18 Javascript
JavaScript对象字面量和构造函数原理与用法详解
Apr 18 Javascript
jquery实现图片放大镜效果
Dec 23 jQuery
微信小程序实现上传多个文件 超过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
php 获取可变函数参数的函数
2009/08/26 PHP
PHP判断文件是否存在、是否可读、目录是否存在的代码
2012/10/03 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
javascript Math.random()随机数函数
2009/11/04 Javascript
Javascript 类型转换方法
2010/10/24 Javascript
图片无缝滚动代码(向左/向下/向上)
2013/04/10 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
javascript调试之DOM断点调试法使用技巧分享
2014/04/15 Javascript
如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
2015/03/05 Javascript
Javascript的表单与验证-非空验证
2016/03/18 Javascript
js 截取或者替换字符串中的数字实现方法
2016/06/13 Javascript
ES6中的数组扩展方法
2016/08/26 Javascript
Angular的自定义指令以及实例
2016/12/26 Javascript
关于iframe跨域POST提交的方法示例
2017/01/15 Javascript
JS验证字符串功能
2017/02/22 Javascript
JavaScript限制在客户区可见范围的拖拽(解决scrollLeft和scrollTop的问题)(2)
2017/05/17 Javascript
详解Vue组件实现tips的总结
2017/11/01 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
2018/01/03 Javascript
vue双向绑定及观察者模式详解
2019/03/19 Javascript
Vue中的组件及路由使用实例代码详解
2019/05/22 Javascript
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
vue.js+elementUI实现点击左右箭头切换头像功能(类似轮播图效果)
2019/09/05 Javascript
wxPython窗口中文乱码解决方法
2014/10/11 Python
python通过ssh-powershell监控windows的方法
2015/06/02 Python
Python3.7实现中控考勤机自动连接
2018/08/28 Python
解决nohup执行python程序log文件写入不及时的问题
2019/01/14 Python
Python依赖包整体迁移方法详解
2019/08/15 Python
Python小白不正确的使用类变量实例
2020/05/29 Python
英国演唱会订票网站:Ticket Selection
2018/03/27 全球购物
微软新西兰官方网站:Microsoft New Zealand
2018/08/17 全球购物
机械制造与自动化应届生求职信
2013/11/16 职场文书
小学生暑假感言
2014/02/06 职场文书
奥巴马开学演讲稿
2014/05/15 职场文书
职业规划实施方案
2014/06/10 职场文书
法律服务所工作总结
2015/08/10 职场文书
教你利用Selenium+python自动化来解决pip使用异常
2021/05/20 Python