常用JavaScript正则表达式整理
程序员文章站
2023-10-15 11:49:24
在表单验证中,正则表达式书写起来特别繁琐,本文整理了15个常用的JavaScript正则表达式,其中包括用户名、密码强度、整数、数字、电子邮件地址(Email)、手机号码、身份证号、URL地址、 IPv4地址、 十六进制颜色、 日期、 QQ号码、 微信号、车牌号、中文正则、文件路径及扩展名、提取网页 ......
在表单验证中,正则表达式书写起来特别繁琐,本文整理了15个常用的javascript正则表达式,其中包括用户名、密码强度、整数、数字、电子邮件地址(email)、手机号码、身份证号、url地址、 ipv4地址、 十六进制颜色、 日期、 qq号码、 微信号、车牌号、中文正则、文件路径及扩展名、提取网页中颜色代码、提取网页中图片、提取网页超联机、提取css、抽取注释、
1.用户名
//用户名正则,4到16位(字母,数字,下划线,减号)
var username = /^[a-za-z0-9_-]{4,16}$/;
//优化后:
//username = /^[\w-]{4,16}$/;
2.密码强度
//密码强度正则,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符
var ppattern = /^.*(?=.{6,})(?=.*\d)(?=.*[a-z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/;
//密码的强度必须是包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间
var reg = /^(?=.*\\d)(?=.*[a-z])(?=.*[a-z]).{8,10}$/;
3.整数
//正整数正则
var pospattern = /^\d+$/;
//负整数正则
var negpattern = /^-\d+$/;
//整数正则
var intpattern = /^-?\d+$/;
4.数字(可以整数也可以浮点数)
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)$
5.email
//email正则
var epattern = /^([a-za-z0-9_\-\.])+\@([a-za-z0-9_\-\.])+\.([a-za-z]{2,4})$/;
//优化后:
var epattern =/^([\w\-\.])+\@([\w\-\.])+\.([a-za-z]{2,4})$/;
//else
var reg =/[\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?/;
6.手机号码
//手机号正则
var mpattern = /^1[34578]\d{9}$/;
7.身份证号
//身份证号(18位)正则
var cp = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9xx]$/;
//15位:
var reg = /^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$/
8.url
//url正则
var urlp= /^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;
9.ipv4地址
//ipv4地址正则
var ipp = /^(?:(?: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]?)$/;
10.十六进制颜色
//rgb hex颜色正则
var cpattern = /^#?([a-fa-f0-9]{6}|[a-fa-f0-9]{3})$/;
11.日期
//日期正则,简单判定,未做月份及日期的判定
var dp1 = /^\d{4}(\-)\d{1,2}\1\d{1,2}$/;
//日期正则,复杂判定
var dp2 = /^(?:(?!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)$/;
var reg2 = /^(^(\d{4}|\d{2})(\-|\/|\.)\d{1,2}\3\d{1,2}$)|(^\d{4}年\d{1,2}月\d{1,2}日$)$/;
12.qq号码
//qq号正则,5至11位
var qqpattern = /^[1-9][0-9]{4,10}$/;
13.微信号
//微信号正则,6至20位,以字母开头,字母,数字,减号,下划线
var wxpattern = /^[a-za-z]([-_a-za-z0-9]{5,19})+$/;
14.车牌号
//车牌号正则
var cpattern = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领a-z]{1}[a-z]{1}[a-z0-9]{4}[a-z0-9挂学警港澳]{1}$/;
15.包含中文
//包含中文正则
var cnpattern = /[\u4e00-\u9fa5]/;
var reg = /^[\\u4e00-\\u9fa5]{0,}$/;
16.文件路径及扩展名
//验证 windows下文件路径和扩展名(下面的例子中为.txt文件)
var reg = /^([a-za-z]\\:|\\\\)\\\\([^\\]+\\)*[^\\/:*?"<>|]+\\.txt(l)?$/;
17.提取color hex codes
//有时需要抽取网页中的颜色代码,可以使用下面的表达式。
var reg = /^#([a-fa-f0-9]{6}|[a-fa-f0-9]{3})$/;
18.提取网页中的图片
//提取网页图片假若你想提取网页中所有图片信息,可以利用下面的表达式。
var reg = /\\< *[img][^\\>]*[src] *= *[\\"\']{0,1}([^\\"\'\ >]*)/;
19.提取页面超链接
var reg = /(<a\\s*(?!.*\\brel=)[^>]*)(href="https?:\/\/)((?!(?:(?:www\\.)?'.implode('|(?:www\\.)?', $follow_list).'))[^" rel="external nofollow" ]+)"((?!.*\\brel=)[^>]*)(?:[^>]*)>/;
20.查找css属性
//下面的表达式,可以搜索到相匹配的css属性。
var reg = /^\\s*[a-za-z\\-]+\\s*[:]{1}\\s[a-za-z0-9\\s.#]+[;]{1}/;
21.抽取注释
//如果你需要移除hmtl中的注释,可以使用如下的表达式。
var reg = /<!--(.*?)-->/;