正则表达式全集
中国电话号码验证
匹配形式如:0511-4405222
正则表达式
中国邮政编码验证
匹配形式如:215421
正则表达式
电子邮件验证
匹配形式如:justali@justdn.com
正则表达式
身份证验证
匹配形式如:15位或者18位身份证
正则表达式
常用数字验证
正则表达式
"d{n}"
"d{n,m}"
非法字符验证
匹配非法字符如:<
正则表达式
日期验证
匹配形式如:20030718,030718
范围:1900--2099
正则表达式((((19){1}|(20){1})d{2})|d{2})[01]{1}d{1}[0-3]{1}d{1}
正则表达式是一个好东西,但是一般情况下,我们需要验证的内容少之又少。下面是常用的17种正则表达式:
"^\d+$" //非负整数(正整数
"^[0-9]*[1-9][0-9]*$" //正整数
"^((-\d+)|(0+))$" //非正整数(负整数
"^-[0-9]*[1-9][0-9]*$" //负整数
"^-?\d+$" //整数
"^\d+(\.\d+)?$" //非负浮点数(正浮点数
"^(([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-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //负浮点数
"^(-?\d+)(\.\d+)?$" //浮点数
"^[A-Za-z]+$" //由26个英文字母组成的字符串
"^[A-Z]+$" //由26个英文字母的大写组成的字符串
"^[a-z]+$" //由26个英文字母的小写组成的字符串
"^[A-Za-z0-9]+$" //由数字和26个英文字母组成的字符串
"^\w+$" //由数字、26个英文字母或者下划线组成的字符串
"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$" //email地址
"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$" //url
[code]电子邮件
HTTP
邮编
身份证
整数
数值
日期
合法的用户名(以字母开头,长度不小于4)
<="">[code]常用正则表达式语法例句
这里有一些可能会遇到的正则表达式示例:
/^\[
/\d{2}-\d{5}/
个连字符以及一个5位数字组成。
/<(.*)>.*<\/\1>/
下表是元字符及其在正则表达式上下文中的行为的一个完整列表:
字符
\
向引用、或一个八进制转义符。例如,'n'
匹配一个换行符。序列
^
Multiline
$
Multiline
*
"zoo"。
+
及
?
"do"
{n}
"Bob"
{n,}
"Bob"
等价于
{n,m}
配
'o{0,1}'等价于'o?'。请注意在逗号和两个数之间不能有空格
?
{n,m})
匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜
索的字符串。例如,对于字符串
"o",而
.
何字符,请使用象
(pattern)
Matches
Visual
匹配圆括号字符,请使用
(?:pattern)
配,不进行存储供以后使用。这在使用
一个模式的各个部分是很有用。例如,
是一个比
(?=pattern)
串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后
使用。例如,'Windows
2000"中的"Windows",但不能匹配"Windows3
预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹
配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之
后开始。
(?!pattern)
search
pattern
配,也就是说,该匹配不需要获取供以后使用。例如'Windows
(?!95|98|NT|2000)'
但不能匹配
符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开
始下一次匹配的搜索,而不是从包含预查的字符之后开始
x|y
ood'
[xyz]
匹配
[^xyz]
匹配
[a-z]
配
[^a-z]
'[^a-z]'
\b
'er\b'
的
\B
配
\cx
回车符。
个原义的
\d
\D
\f
\n
\r
\s
[
\S
\t
\v
\w
\W
\xn
定的两个数字长。例如,
于
\num
例如,'(.)\1'
\n
个获取的子表达式,则
数字
\nm
is
向引用。如果
字
八进制数字
\nml
7),则匹配八进制转义值
\un
符。例如,
常用正则表达式 -------------------------------------------------------------------------------- 匹配html的嵌入代码 匹配[....]的嵌入码[code] 删除仅由空字符组成的行 [code]sed 匹配html标签 [code]/\(<[^>]*>\)/[/code]例如:从html文件中剔除html标签 [code]sed 例如:要从下列代码中去除"[]"及其中包括的代码 [code][b][color=red]一. sed [b]匹配日期:[/b] [code]Month, 2003-01-28 \([0-9]\{4\}[ [b]匹配IP地址[/b] [code]\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\) \(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\)[/code] [b]匹配数字串[/b] [code][-+]*[0-9]\{1,\} [-+]*[0-9]\{1,\}\.[0-9]\{1,\} [b]从字串中解析出两个子串(前2各字符和后9个字符) [code]echo We [b]分解日期串[/b] [code]echo echo [b]文件内容倒序输出[/b] [code]sed |
[code]匹配中文字符的正则表达式:
[\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):
[^\x00-\xff]
匹配空行的正则表达式:
\n[\s|
匹配HTML标记的正则表达式:
/<(.*)>.*<\/\1>|<(.*)
匹配首尾空格的正则表达式:
(^\s*)|(\s*$)
URL:
[url]http://([/url][\w-]+\.)+[\w-]+(/[\w-
Email:
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
中华人民共和国电话号码
(\(\d{3}\)|\d{3}-)?\d{8}
中华人民共和国邮编
\d{6}
门丁注册的id格式:2-12位,数字、字符、下划线(0-9,a-z,A-Z,_)
^[0-9a-zA-Z]+(\w){1,11}[/code]
|
[color=red]蓝吧甜 你和宝宝在森林里找了个好东西给你~~管理员作的特别科研卡! 卡片说明:获得社区特别科研基金100个金币。 卡片效果:得到100金币。 你高兴我也高兴![/color] [img]http://www.xmsq.com/web/images/card/23.jpg[/img] [code]匹配中文字符的正则表达式: 匹配双字节字符(包括汉字在内):[^\x00-\xff] 匹配空行的正则表达式:\n[\s| 匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) 匹配首尾空格的正则表达式:(^\s*)|(\s*$)(像vbscript那样的trim函数) 匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 匹配网址URL的正则表达式:[url]http://([/url][\w-]+\.)+[\w-]+(/[\w- --------------------------------------------------------------------------- 以下是例子: 利用正则表达式限制网页表单里的文本框输入内容: 用正则表达式限制只能输入中文:οnkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" 1.用正则表达式限制只能输入全角字符: 2.用正则表达式限制只能输入数字:οnkeyup="value=value.replace(/[^\d]/g,'') 3.用正则表达式限制只能输入数字和英文:οnkeyup="value=value.replace(/[\W]/g,'') 4.计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) String.prototype.len=function(){return 5.javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现,如下: String.prototype.trim { } 利用正则表达式分解和转换IP地址: 6.下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序: function { re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g if(re.test(ip)) { return } else { throw } } 不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下: var ip=ip.split(".") alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))[/code] 经典正则表达式(ZT) 关键词: { }利用正则表达式分解和转换IP地址:下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序:function { if(re.test(ip)) { return } else { } }不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下:var ip=ip.split(".") alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w- var var var alert(s1+s2) s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2") alert(s)利用正则表达式限制网页表单里的文本框输入内容:用正则表达式限制只能输入中文:οnkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" 正则表达式,相关链接 http://blog.csdn.net/laily/category/19548.aspx http://blog.csdn.net/laily/archive/2004/06/30/30525.aspx 补充: ^\d+$ //匹配非负整数(正整数 ^[0-9]*[1-9][0-9]*$ //匹配正整数 ^((-\d+)|(0+))$ //匹配非正整数(负整数 ^-[0-9]*[1-9][0-9]*$ //匹配负整数 ^-?\d+$ //匹配整数 ^\d+(\.\d+)?$ //匹配非负浮点数(正浮点数 ^(([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-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$ //匹配负浮点数 ^(-?\d+)(\.\d+)?$ //匹配浮点数 ^[A-Za-z]+$ //匹配由26个英文字母组成的字符串 ^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串 ^[a-z]+$ //匹配由26个英文字母的小写组成的字符串 ^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串 ^\w+$ //匹配由数字、26个英文字母或者下划线组成的字符串 ^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$ //匹配email地址 ^[a-zA-z]+://匹配(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$ //匹配url var var var alert(s1+s2) =============================== 如果var 结果就不对了,结果为:abeicfgg 正则表达式的能力有限 下面的代码示例使用静态 Function ' Return End [C#] bool { // return } 2.清理输入字符串 下面的代码示例使用静态 Function ' Return End [C#] String { // return } 3.更改日期格式 以下代码示例使用 Function Return "\b(?\d{1,2})/(?\d{1,2})/(?\d{2,4})\b", "${day}-${month}-${year}") End [C#] String { return "\\b(?\\d{1,2})/(?\\d{1,2})/(?\\d{2,4})\\b", "${day}-${month}-${year}"); } Regex 本示例说明如何在 4.提取 以下代码示例使用 Function Dim RegexOptions.Compiled) Return End [C#] String { Regex RegexOptions.Compiled); return } by 常用的匹配正则表达式和实例: 正则表达式使用详解[转] 入门简介 简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具。我们可以在几乎所有的基于UNIX系统的工具中找到正则表达式的身影,例如,vi编辑器,Perl或PHP脚本语言,以及awk或sed 正则表达式可以让用户通过使用一系列的特殊字符构建匹配模式,然后把匹配模式与数据文件、程序输入以及WEB页面的表单输入等目标对象进行比较,根据比较对象中是否包含匹配模式,执行相应的程序。 举例来说,正则表达式的一个最为普遍的应用就是用于验证用户在线输入的邮件地址的格式是否正确。如果通过正则表达式验证用户邮件地址的格式正确,用户所填写的表单信息将会被正常处理;反之,如果用户输入的邮件地址与正则表达的模式不匹配,将会弹出提示信息,要求用户重新输入正确的邮件地址。由此可见正则表达式在WEB应用的逻辑判断中具有举足轻重的作用。 基本语法 在对正则表达式的功能和作用有了初步的了解之后,我们就来具体看一下正则表达式的语法格式。 正则表达式的形式一般如下: /love/ 其中位于“/”定界符之间的部分就是将要在目标对象中进行匹配的模式。用户只要把希望查找匹配对象的模式内容放入“/”定界符之间即可。为了能够使用户更加灵活的定制模式内容,正则表达式提供了专门的“元字符”。所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。 较为常用的元字符包括: 下面,就让我们来看一下正则表达式元字符的具体应用。 /fo+/ 因为上述正则表达式中包含“+”元字符,表示可以与目标对象中的 /eg*/ 因为上述正则表达式中包含“*”元字符,表示可以与目标对象中的 /Wil?/ 因为上述正则表达式中包含“?”元字符,表示可以与目标对象中的 除了元字符之外,用户还可以精确指定模式在匹配对象中出现的频率。例如, /jim{2,6}/ 上述正则表达式规定字符m可以在匹配对象中连续出现2-6次,因此,上述正则表达式可以同jimmy或jimmmmmy等字符串相匹配。 在对如何使用正则表达式有了初步了解之后,我们来看一下其它几个重要的元字符的使用方式。 \s:用于匹配单个空格符,包括tab键和换行符; \S:用于匹配除单个空格符之外的所有字符; \d:用于匹配从0到9的数字; \w:用于匹配字母,数字或下划线字符; \W:用于匹配所有与\w不匹配的字符; . (说明:我们可以把\s和\S以及\w和\W看作互为逆运算) 下面,我们就通过实例看一下如何在正则表达式中使用上述元字符。 /\s+/ 上述正则表达式可以用于匹配目标对象中的一个或多个空格字符。 /\d000/ 如果我们手中有一份复杂的财务报表,那么我们可以通过上述正则表达式轻而易举的查找到所有总额达千元的款项。 除了我们以上所介绍的元字符之外,正则表达式中还具有另外一种较为独特的专用字符,即定位符。定位符用于规定匹配模式在目标对象中的出现位置。 较为常用的定位符包括: /^hell/ 因为上述正则表达式中包含“^”定位符,所以可以与目标对象中以 /ar$/ 因为上述正则表达式中包含“$”定位符,所以可以与目标对象中以 /\bbom/ 因为上述正则表达式模式以“\b”定位符开头,所以可以与目标对象中以 /man\b/ 因为上述正则表达式模式以“\b”定位符结尾,所以可以与目标对象中以 为了能够方便用户更加灵活的设定匹配模式,正则表达式允许使用者在匹配模式中指定某一个范围而不局限于具体的字符。例如: /[A-Z]/ 上述正则表达式将会与从A到Z范围内任何一个大写字母相匹配。 /[a-z]/ 上述正则表达式将会与从a到z范围内任何一个小写字母相匹配。 /[0-9]/ 上述正则表达式将会与从0到9范围内任何一个数字相匹配。 /([a-z][A-Z][0-9])+/ 上述正则表达式将会与任何由字母和数字组成的字符串,如 如果我们希望在正则表达式中实现类似编程逻辑中的“或”运算,在多个不同的模式中任选一个进行匹配的话,可以使用管道符 /to|too|2/ 上述正则表达式将会与目标对象中的 正则表达式中还有一个较为常用的运算符,即否定符 /[^A-C]/ 上述字符串将会与目标对象中除A,B,和C之外的任何字符相匹配。一般来说,当“^”出现在 最后,当用户需要在正则表达式的模式中加入元字符,并查找其匹配对象时,可以使用转义符“\”。例如: /Th\*/ 上述正则表达式将会与目标对象中的“Th*”而非“The”等相匹配。 使用实例 在对正则表达式有了较为全面的了解之后,我们就来看一下如何在Perl,PHP,以及JavaScript中使用正则表达式。 通常,Perl中正则表达式的使用格式如下: operator 运算符一项可以是m或s,分别代表匹配运算和替换运算。 其中,正则表达式一项是将要进行匹配或替换操作的模式,可以由任意字符,元字符,或定位符等组成。替换字符串一项是使用s运算符时,对查找到的模式匹配对象进行替换的字符串。最后的参数项用来控制不同的匹配或替换方式。例如: s/geed/good/ 将会在目标对象中查找第一个出现的geed字串,并将其替换为good。如果我们希望在目标对象的全局范围内执行多次查找—替换操作的话,可以使用参数 此外,如果我们不需要限制匹配的大小写形式的话,可以使用参数 m/JewEL/i 上述正则表达式将会与目标对象中的jewel,Jewel,或JEWEL相匹配。 在Perl中,使用专门的运算符“=~”指定正则表达式的匹配对象。例如: $flag 上述正则表达式将会把变量$flag中的字串abc替换为ABC。 下面,我们就在Perl程序中加入正则表达式,验证用户邮件地址格式的有效性。代码如下: #!/usr/bin/perl # print $email chomp($email); # if($email { print(“Your } else { print(“Please } 如果用户更偏爱PHP的话,可以使用ereg()函数进行模式匹配操作。ereg()函数的使用格式如下: 其中,pattern代表正则表达式的模式,而string则是执行查找替换操作的目标对象。同样是验证邮件地址,使用PHP编写的程序代码如下: <?php 最后,我们在来看一下JavaScript。JavaScript 我们可以使用JavaScript编写以下脚本,验证用户输入的邮件地址的有效性。 { var var flag if(flag) { alert(“Your return } else { alert(“Please return <input <input </form> Trackback: |