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效率调优经验
Jun 04 Javascript
关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
Apr 17 Javascript
使用jQuery快速解决input中placeholder值在ie中无法支持的问题
Jan 02 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
Aug 19 Javascript
浏览器环境下JavaScript脚本加载与执行探析之动态脚本与Ajax脚本注入
Jan 19 Javascript
Bootstrap页面布局基础知识全面解析
Jun 13 Javascript
d3.js实现简单的网络拓扑图实例代码
Nov 06 Javascript
javascript中活灵活现的Array对象详解
Nov 30 Javascript
JavaScript数组的5种迭代方法
Sep 29 Javascript
手把手带你封装一个vue component第三方库
Feb 14 Javascript
解决webpack多页面内存溢出的方法示例
Oct 08 Javascript
Vue 自适应高度表格的实现方法
May 13 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
PHP Global变量定义当前页面的全局变量实现探讨
2013/06/05 PHP
PHP实现数字补零功能的2个函数介绍
2014/05/12 PHP
常用js脚本
2006/12/03 Javascript
JavaScript 字符串处理函数使用小结
2010/12/02 Javascript
jQuery实现切换页面布局使用介绍
2011/10/09 Javascript
ParseInt函数参数设置介绍
2014/01/02 Javascript
浅谈jQuery中的事件
2015/03/23 Javascript
JS实现的车标图片提示效果代码
2015/10/10 Javascript
javascript伸缩型菜单实现代码
2015/11/16 Javascript
js console.log打印对像与数组用法详解
2016/01/21 Javascript
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
2016/05/25 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
2016/06/07 Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
2017/08/22 Javascript
javaScript之split与join的区别(详解)
2017/11/08 Javascript
详解Vue的钩子函数(路由导航守卫、keep-alive、生命周期钩子)
2018/07/24 Javascript
vue 中引用gojs绘制E-R图的方法示例
2018/08/24 Javascript
vue自动路由-单页面项目(非build时构建)
2019/04/30 Javascript
Python中使用 Selenium 实现网页截图实例
2014/07/18 Python
python使用PyGame模块播放声音的方法
2015/05/20 Python
Python运算符重载用法实例分析
2015/06/01 Python
Python的面向对象编程方式学习笔记
2016/07/12 Python
numpy.transpose对三维数组的转置方法
2018/04/17 Python
Python3多进程 multiprocessing 模块实例详解
2018/06/11 Python
django多对多表的创建,级联删除及手动创建第三张表
2019/07/25 Python
Python提取PDF内容的方法(文本、图像、线条等)
2019/09/25 Python
python:动态路由的Flask程序代码
2019/11/22 Python
CSS3 :not()选择器实现最后一行li去除某种css样式
2016/10/19 HTML / CSS
Javascript 高级手势使用介绍
2013/04/21 HTML / CSS
HTML5超文本标记语言的实现方法
2020/09/24 HTML / CSS
巴西手表购物网站:eclock
2019/03/19 全球购物
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
2016/11/26 面试题
化工专业个人的求职信范文
2013/11/28 职场文书
同事打架检讨书
2014/02/04 职场文书
模具专业毕业生自荐书范文
2014/02/19 职场文书
关心下一代工作先进事迹
2014/08/15 职场文书
详解CSS故障艺术
2021/05/25 HTML / CSS