常用正则表达式(程序员必转)

前端之家收集整理的这篇文章主要介绍了常用正则表达式(程序员必转)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。


只能输入数字:"^[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"*$。
只能输入长度为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]+"。
只能输入汉字:"^[\一-\龥]{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"。
利用正则表达式限制网页表单里的文本框输入内容
用正则表达式限制只能输入中文:onkeyup="val=val.replace(/[^\一-\龥]/g,’’)"onbeforepaste="clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^\一-\龥]/g,’’))"
用正则表达式限制只能输入全角字符:onkeyup="val=val.replace(/[^\?-\?]/g,clipboardData.getData(’text’).replace(/[^\?-\?]/g,’’))"
用正则表达式限制只能输入数字:onkeyup="val=val.replace(/[^\d]/g,clipboardData.getData(’text’).replace(/[^\d]/g,’’))"
用正则表达式限制只能输入数字和英文:onkeyup="val=val.replace(/[\W]/g,’’))"

-----------------------------------------------------
限制长度
^.{4,10}$ 4-10位的任意字符串

---------------
只能输入n个字符
表达式:^.{n}$ 如^.{4}$
描述:只能 输入n个字符(空格、汉字、特殊字符等都按1个字符计)
-------------------------------------------------------------------------
字 符串有效长度
表达式:^.{1,50}$
描述:字符串有效长度(空格、汉字、特殊字 符等都按1个字符计)
-----------------------------------------------------------------------
////////////////////////////////////////////////////////////////
//验 证数字
////////////////////////////////////////////////////////////////
------------------------------------------------------------
只 能输入1位数字
表达式:^\d$
描述:匹配1位数字
匹配 的:0,1,2,3
不匹配的:E,22
----------------------------------------------------------
只 能输入n位数字
表达式:^\d{n}$ 如^\d{8}$
描述:匹配 8个数字
匹配的:12345678,22223334,12344321
不匹配的:E,22
-------------------------------------------------------------
只 能输入至少n个数字
表达式:^\d{n,}$ 如^\d{8,}$
描述:匹配最少n位数字
匹 配的:12345678,1234567,123123
------------------------------------------------------------------
只 能输入m到n个数字
表达式:^\d{m,n}$ 如^\d{7,8}$
描述:匹配m到n个数字
匹 配的:12345678,1234567
不匹配的:123456,123456789
------------------------------------------------------------------
只 能输入某个区间数字
表达式:^[12-15]$
描述:只能输入某个区间数 字
匹配的:12,13,14,15
不匹配的:11,16
----------------------------------------------------------------------
只 能输入0和非0打头的数字
表达式:^(0|[1-9][0-9]*)$
描述:只能输入0和非0 打头的数字
匹配的:12,10,101,100
不匹配的:01
--------------------------------------------------------------------
^[0-9]*$
只能输入数字(任意数字)

^\d+$"
非负整数(正整数 + 0)
^\+?[1-9][0-9]*$
正 整数
^[0-9]*[1-9][0-9]*$"
正整数
^((-\d+)|(0+))$"
非正整数(负整数 + 0)
^\-[1-9][0-9]*$
负 整数
^-[0-9]*[1-9][0-9]*$"
负整数
^-?\d+$"
整数
^\d+(\.\d+)?$"
非负浮点数(正浮点数 + 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+)?)|(0+(\.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+)?$"
浮点数
------------------------------------------------------------------------------------
实 数
表达式:^[-+]?\d+(\.\d+)?$
描述:实数
匹配 的:18,+3.14,-9.90
不匹配的:.6,33s,67-99
--------------------------------------------------------------------
只 能输入n位小数的正实数
表达式:^[0-9]+(.[0-9]{n})?$ 如^[0-9]+(.[0-9]{2})?$
描述:只能输入n位小数的正实数
匹配的:2.22
不匹配的:2.222
--------------------------------------------------------------------
只 能输入m-n位小数的正实数
表达式:^[0-9]+(.[0-9]{m,n})?$如^[0-9]+(.[0-9]{1,2})?$
描述:只能输入m-n位小数的正实数
匹配的:2.22,2.2
不匹配 的:2.222,-2.2222
--------------------------------------------------------------
(^\d*\.?\d*[1-9]+\d*$)|(^[1-9]+\d*\.\d*$)
大于零的Decimal数字
^(\d|-)?(\d|,)*\.?\d*$
任何Decimal数字纯数字 负数 逗号分割的数字 点分割的decimal格式 如5,000 -5,000 100.044.2
^(\d|-)?(\d|,)*\.?\d*$
0-99999999的带 或不带逗号的数字
/////////////////////////////////////////////////////////////////////////
//验 证西文字
////////////////////////////////////////////////////////////////////////
^[A-Za-z]+$"
由26个英文字母组成的字符串
^[A-Z]+$"
由 26个英文字母的大写组成的字符串
^[a-z]+$"
由26个英文字母的小写 组成的字符串
^[A-Za-z0-9]+$"
由数字和26个英文字母组成的字符串

^\w+$"
由数字、26个英文字母或者下划线组成的字符串
^.[a-zA-Z]\w{m,n}$
匹 配英文字符开头的m-n位字符且只能数字字母或下划线
\b[^\Wa-z0-9_][^\WA-Z0-9_]*\b
首字母只能大写
----------------------------------------------------------------------
连 在一起的两个相同的单词
表达式:(\w+)\s+\1
描述:验证连在一起的两个相同的单词
匹配 的:abc abc
不匹配的:abc abcd
-----------------------------------------------------
双 引号括起来的词
表达式:"((\")|[^"(\")])+"
描述:验证用双引号括起来的词
匹配 的:
"Abc"
"abc"sff"
不匹配的:
"sdfsdfsdf
-------------------------------------------------------
////////////////////////////////////////////////////
//验 证特定格式
////////////////////////////////////////////////////
-----------------------------------------------------
Email 地址
表达式:^[\w-]+(\.[\w-]+)*@[\w-]+(\. [\w-]+)+$"
描述:普通验证
表达式:\w+([-+.]\w+)*@\w+([-.] \w+)*\.\w+([-.]\w+)*
描述:微软Email验证
复杂表达式:^(([^<>;()[\]\\.,;:@"]+(\.[^<>()[\]\\.,;:@"]+)*)|(".+"))@((([a-z]([-a-z0-9]*[a-z0-9])?)|(#[0-9]+)|(\[((([01]?[0-9]{0,2})|(2(([0-4][0-9])|(5[0-5]))))\.){3}(([01]?[0-9]{0,2})|(2(([0-4][0-9])|(5[0-5]))))\]))\.)*(([a-z]([-a-z0-9]*[a-z0-9])?)|(#[0-9]+)|(\[((([01]?[0-9]{0,2})|(2(([0-4][0-9])|(5[0-5]))))\]))$
描述:标准验证电子邮件地址,所有符合RFC821(http://www.cis.ohio-state.edu/cgi-bin/rfc/rfc0821.html#page-30)规定的格式的邮件地址
-------------------------------------------------------------------------------------------------
Url 验证
表达式:^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\? \S*)?$"
描述:普通Url验证
表达式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
描述:微软Url验证
----------------------------------------------------------------------------------------------
表 达式:[0-9]{5,9}
描述:5-9位的QQ号
表达 式:\d{18}|\d{15}
描述:15位18位身份证号
表 达式:^[1-9]([0-9]{16}|[0-9]{13})[xX0-9]$
描述:15或者18位的身份证号,支持带 X的
表达式:^13[0-9]{1}[0-9]{8}|^15[9]{1}[0-9]{8}
描述:包 含159的手机号130-139
表达式:(P\d{7})|G\d{8})
描述:验证P+7个数字和G+8个数字 护照
表达式:^[a-zA-Z0-9]+([a-zA-Z0-9\-\.]+)?\.(com|org|net|cn|com.cn|edu.cn|grv.cn|)$
描述:验 证域名
表达式:^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$"
描述: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
--------------------------------------------------------------------------------------
信 用卡
表达式:^[{|\(]?[0-9a-fA-F]{8}[-]?([0-9a-fA-F]{4}[-]?){3}[0-9a-fA-F]{12}[\)|}]?$
描述:16位数字用连字符或者空格或者分割
匹配的:
1234343425262837
1111-2323-2312-3434
1111 2323 2312 3434
不匹配的:
1111 2323 2312-3434
表达式:^((?: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卡,美国运通卡
--------------------------------------------------------------------------------------------
^(\d[- ]*){9}[\dxX]$ //验证ISBN国际标准书号 如7-111-19947-2
^[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}$//验证GUID全球唯一标识符 如2064d355-c0b9-41d8-9ef7-9d8b26524751
^([a-zA-Z]\:|\\)\\([^\\]+\\)*[^\/:*?"<>|]+\.txt(l)?$//检查路径和文件扩展名 E:\mo.txt 错 E:\,mo.doc,E:\mo.doc
图片 src[^>]*[^/].(?:jpg|bmp|gif)(?:"|\')
网址 "\foundAnchor>[^'"">]+?)[^>]*?\>"
///////////////////////////////////////////////////////////////
//验 证中文字符
//////////////////////////////////////////////////////////////
-------------------------------------------------------------------
表 达式:^([\一-\龥]+|[a-zA-Z0-9]+)$
描述:中文
表达 式:[\一-\龥]
描述:中文字符
表达式: (/[^\一-\龥]/g
描述:中文字符
表达 式:^[\一-\龥]{0,}$
描述:只能汉字
表达式: [^\x00-\xff]
描述:双字节字符(包括汉字在内)
表 达式:\n[\s| ]*\r
描述:匹配空行
表达式: (^\s*)|(\s*$)
描述:匹配首尾空格:(像vbscript那样的trim函数
------------------------------------------------------------
验 证16进制颜色值
表达式:^#?([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]| [0-9]){3})?$
描述:验证16进制的颜色值,#是可选的。
匹配的:
#00ccff
ffffcc
不 匹配的:
bl
0x000000
-------------------------------------------------------------
///////////////////////////////////////////////////////
//标 记相关
///////////////////////////////////////////////////////
-------------------------------------------------------
验 证HTML标记
表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
描 述:匹配HTML标记
------------------------------------------------------
验 证标记
描述: 所有的html和xml标记
表达式:< [^>]+>
--------------------------------------------------------------
验 证一对封闭的<>标记
表达式:^#?([a-f]|[A-F]|[0-9]){3}(([a-f]|[A- F]|[0-9]){3})?$
描述:验证一对括起来的<>标记
匹配的:
text
More Text
不匹配的:
bl
0x000000
------------------------------------------------------------
验 证HTML中所有合法的on事件
表达式:(?i:on(blur|c(hange|lick)|dblclick|focus|keypress|(key|mouse)(down|up)|(un)?load|mouse(move|o(ut|ver))|reset|s(elect|smit)))
描 述:验证HTML中所有合法的on事件
匹配的:onclick onmouSEOver
不匹配的:Click Move
--------------------------------------------------------
查 找html中的注释
表达式:
描述:查找html中的注释
匹配 的:
不匹配 的:

this text has been removed

----------------------------------------------------------------
查 找html中的特定文件(swf.jpg.gif…)
表达式:<[^>]*\n?.*=("|')?(.*\.jpg)("|')?.*\n?[^<]*>
描述:查找html中的特定文件(swf.jpg.gif…)把jpg换为gif, 即是查找所有的gif文件
匹配的:
不匹配的:= img.jpg
-------------------------------------------------------------------------
///////////////////////////////////////////
//日 期和时间相关
///////////////////////////////////////////
-------------------------------------------------------------------------
^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$ //日期格式2007-07-07
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // 月/日/年
YYYY-MM-DD基本上把闰年和2月等的情况都考虑进去了
^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$
---------------------------------------------------------------
日 期验证
表达式:
^(?:(?:(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(\/|-|\.)(?:0?2\1(?:29)))|(?:(?:(?:1[6-9]|[2-9]\d)?\d{2})(\/|-|\.)(?:(?:(?:0?[13578]|1[02])\2(?:31))|(?:(?:0?[1,3-9]|1[0-2])\2(29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\2(?:0?[1-9]|1\d|2[0-8]))))$
描 述:
验证格式为y/m/d的日期从1600/1/1 - 9999/12/31的日期
匹配的:
04/2/29
2002-4-30
02.10.31
不 匹配的:
2003/2/29
02.4.31
00/00/00
-------------------------------------------------------
合 法的日期和时间
表达式:
^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s(((0?[0-9])|([1-2][0-3]))\:([0-5]?[0-9])((\s)|(\:([0-5]?[0-9])))))?$
描 述:验证所有合法的日期和时间
匹配的:
yyyy-MM-dd
hh:mm:ss
yyyy-MM-dd hh:mm:ss
不 匹配的:2003/2/29 00/00/00
--------------------------------------------------
标 准ANSI sql日期验证
表达式:
^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s(((0?[1-9])|(1[0-2]))\:([0-5][0-9])((\s)|(\:([0-5][0-9])\s))([AM|PM|am|pm]{2,2})))?$
描 述:
匹配ANSI sql的日期格式:yyyy-MM-dd hh:mm:ss am/pm包括检查从1901-2099是否是闰年。
匹 配的:
2004-2-29
2004-02-29 10:29:39 pm
2004/12/31
不匹配的
04-2-29
04-02-29 10:29:39 pm
04/12/31
---------------------------------------------------------
//////////////////////////////////////////////////////
//其 他
//////////////////////////////////////////////////////
------------------------------------------------------------
匹 配字体
表达式:^(\d)(\d)*( )*(px|PX|Px|pX|pt|PT|Pt|pT|)$
描述:查 找字体的后缀
匹配的:
1px
100 PT
20Px
不匹配的:1abc、px、1、sdfs
-------------------------------------------------------------
匹 配MD5哈西字符串
表达式:^([a-z0-9]{32})$
描述:匹配MD5哈西字符串
匹配 的:790d2cf6ada1937726c17f1e f41ab125
不匹配 的:790D2CF6ADA1937726C17F1E F41AB125
---------------------------------------------------------------------------
以下是例子:
利用正则表达式限制网页表单里的文本框输入内容
用正则表达式限制只能输入中文:onkeyup="val=val.replace(/[^\一-\龥]/g,'')"onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\一-\龥]/g,''))"
1. 用正则表达式限制只能输入全角字符: onkeyup="val=val.replace(/[^\?-\?]/g,clipboardData.getData('text').replace(/[^\?-\?]/g,''))"
2. 用正则表达式限制只能输入数字:onkeyup="val=val.replace(/[^\d]/g,clipboardData.getData('text').replace(/[^\d]/g,''))"
3. 用正则表达式限制只能输入数字和英文:onkeyup="val=val.replace(/[\W]/g,''))"
4.计 算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
String.prototype.len=function(){returnthis.replace([^\x00-\xff]/g,"aa").length;}
5.javascript中没有像 vbscript那样的trim函数,我们就可以利用这个表达式来实现,如下:
String.prototype.trim = function()
{
return this.replace(/(^\s*)|(\s*$)/g,"");
}
利 用正则表达式分解和转换IP地址:
6.下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的 Javascript程序:
function IP2V(ip)
{
re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g//匹配IP地址的正则表达式
if(re.test(ip))
{
returnRegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
}
else
{
throw new Error("不是一个正确的IP地址!")
}
}
不 过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下:
var ip="10.100.20.168"
ip=ip.split(".")
alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))
(?<=>)[^>]*(?=<)




得用正则表达式从URL地址提取文件名的Javascript程序,如下结果为page1
以下是引用片段:
s="http://www.9499.net/page1.htm"
s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2")
alert(s)
匹配双字节字符(包括汉字在内):[^\x00-\xff]
应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
以下是引用片段:
String.prototype.len=function(){returnthis.replace([^\x00-\xff]/g,"aa").length;}
匹配空行的正则表达式:\n[\s| ]*\r
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
匹配首尾空格的正则表达式:(^\s*)|(\s*$)
以下是引用片段:
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))
{
returnRegExp.$1*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
}
else
{
throw new Error("Not a valid IPaddress!")
}
}
不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下:
以下是引用片段:
varip="10.100.20.168"
ip=ip.split(".")
alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))

猜你在找的正则表达式相关文章