>>
51aspx首页
| >>
Winform源码
| >>
.Net源码大搜捕
| >>
问题/帮助
登录
注册
标签
会员
搜索
帮助
Asp.net源码交流论坛
»
Asp.net交流讨论区
»
Asp.net技术问答
»
实用正则表达式(实用篇)
帖子标题
业务申请区
实名认证申请
免费.Net主机申请
积分奖励申请
有偿服务申请
Asp.net交流讨论区
Asp.net技术问答
.Net项目、服务交易区
.Net源码问答区
Asp.net技术文章
常用工具下载
Asp.net资源发布区
[源码发布区]
[视频发布区]
[商业代码区]
[其他.net相关资源]
Asp.net专题讨论区
Ajax/Atlas无刷新技术
面向对象开发
ADO.net讨论区
控件专题讨论
源码环境搭建和部署视频!
源码使用常见问题
51Aspx自有服务产品 开业特惠
快速通道:
[
源码发布
]
|
[
实名认证
]
1/1页
1
跳转到
页
查看:2205
键盘左右键可以进行前后翻页操作
实用正则表达式(实用篇)
微尘的爱
零亂℃啲愛
组别
[
工程师
]
性别
积分
[
443
]
帖子
287
注册时间
2007-12-04
微尘的爱
2007-12-31 03:20
| 只看楼主
树型
|
收藏
|
小
中
大
1
#
实用正则表达式(实用篇)
好久没写博客,这次写博客主要是针对所学的正则表达式做一个整理.因为用时总是不大把握,每次都得百度,因此将常用的一些正则以及一些比较难记混淆的字符纪录于此,本篇并不是正则的使用教程,只是一些常用的字符及常用的正则,权当一个工具书使用.当然如果能够解决一些朋友的燃眉之需,那应该是一件非常令人高兴的事了.本文内容大都摘自其他博客,如有侵权,请指明更正.(HOHO,排版排得好累...)
常用的元字符有
.
匹配除换行符以外的任意字符
\w
匹配字母或数字或下划线或汉字
\s
匹配任意的空白符
\d
匹配数字
\b
匹配单词的开始或结束
^
匹配字符串的开始
$
匹配字符串的结束
常用的限定符
*
重复零次或更多次
+
重复一次或更多次
?
重复零次或一次
重复n次
{n,}
重复n次或更多次
{n,m}
重复n到m次
常用的反义字符
\W
匹配任意不是字母,数字,下划线,汉字的字符
\S
匹配任意不是空白符的字符
\D
匹配任意非数字的字符
\B
匹配不是单词开头或结束的位置
[^x]
匹配除了x以外的任意字符
贪婪与懒惰限定符
*?
重复任意次,但尽可能少重复
+?
重复1次或更多次,但尽可能少重复
??
重复0次或1次,但尽可能少重复
{n,m}?
重复n到m次,但尽可能少重复
{n,}?
重复n次以上,但尽可能少重复
使用小括号()时的一些特殊语法
(exp)
匹配exp,并捕获文本到自动命名的组里
(?<name>exp)
匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp)
匹配exp,不捕获匹配的文本,也不给此分组分配组号
(?=exp)
匹配exp前面的位置
(?<=exp)
匹配exp后面的位置
(?!exp)
匹配后面跟的不是exp的位置
(?<!exp)
匹配前面不是exp的位置
(?#comment)
这种类型的组不对正则表达式的处理产生任何影响,用于提供注释让人阅读
一些不是很经常使用的字符
\a
报警字符(打印它的效果是电脑嘀一声)
\b
通常是单词分界位置,但如果在字符类里使用代表退格
\t
制表符,Tab
\r
回车
\v
竖向制表符
\f
换页符
\n
换行符
\e
Escape
\0nn
ASCII代码中八进制代码为nn的字符
\xnn
ASCII代码中十六进制代码为nn的字符
\unnnn
Unicode代码中十六进制代码为nnnn的字符
\cN
ASCII控制字符。比如\cC代表Ctrl+C
\A
字符串开头(类似^,但不受处理多行选项的影响)
\Z
字符串结尾或行尾(不受处理多行选项的影响)
\z
字符串结尾(类似$,但不受处理多行选项的影响)
\G
当前搜索的开头
\p{name}
Unicode中命名为name的字符类,例如\p{IsGreek}
(?>exp)
贪婪子表达式
(?<x>-<y>exp)
平衡组
(?im-nsx:exp)
在子表达式exp中改变处理选项
(?im-nsx)
为表达式后面的部分改变处理选项
(?(exp)yes|no)
把exp当作零宽正向先行断言,如果在这个位置能匹配,使用yes作为此组的表达式;否则使用no
(?(exp)yes)
同上,只是使用空表达式作为no
(?(name)yes|no)
如果命名为name的组捕获到了内容,使用yes作为表达式;否则使用no
(?(name)yes)
同上,只是使用空表达式作为no
一些常用的正则表达式:
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
匹配空行的正则表达式:\n[\s| ]*\r
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
匹配首尾空格的正则表达式:(^\s*)|(\s*$)
利用正则表达式分解和转换IP地址:
下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序:
function IP2V(ip)
{
re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正则表达式
if(re.test(ip))
{
return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
}
else
{
throw new Error("Not a valid IP address!")
}
}
不过上面的程序如果不用正则表达式,而直接用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))
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
用正则表达式限制只能输入中文:
用正则表达式限制只能输入全角字符:
用正则表达式限制只能输入数字:
用正则表达式限制只能输入数字和英文:
===========================================================================================
^\d+$ //匹配非负整数(正整数 + 0)
^[0-9]*[1-9][0-9]*$ //匹配正整数
^((-\d+)|(0+))$ //匹配非正整数(负整数 + 0)
^-[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+)?$ //匹配浮点数
^[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
从此我不再仰脸看青天,不再低头看白水,只谨慎着我双双的脚步,我要一不一不踏在泥土上,打上深深的脚印!
TOP
发送短消息
查看公共资料
查找该会员全部帖子
UID
1554
精华
7
威望
121 分
金钱
51.35 元
来自
北京
状态
离线
18470590
kenshinpan
组别
[
学员
]
性别
积分
[
17
]
帖子
17
注册时间
2007-06-22
kenshinpan
2008-01-14 16:02
树型
|
收藏
|
小
中
大
2
#
回复:实用正则表达式(实用篇)
很好,很实用
TOP
发送短消息
查看公共资料
查找该会员全部帖子
UID
263
精华
0
威望
0 分
金钱
1.85 元
来自
状态
离线
freshlyg
组别
[
学员
]
性别
积分
[
1
]
帖子
1
注册时间
2008-01-16
freshlyg
2008-01-16 14:35
树型
|
收藏
|
小
中
大
3
#
回复:实用正则表达式(实用篇)
很好,很强大!
TOP
发送短消息
查看公共资料
查找该会员全部帖子
UID
5408
精华
0
威望
0 分
金钱
0.1 元
来自
状态
离线
<<
上一主题
|
下一主题
>>
1/1页
1
跳转到
页
发新主题
论坛跳转...
业务申请区
Asp.net交流讨论区
Asp.net技术问答
.Net项目、服务交易区
.Net源码问答区
Asp.net技术文章
[源码发布区]
[视频发布区]
[商业代码区]
[其他.net相关资源]
常用工具下载
Asp.net资源发布区
Asp.net专题讨论区
Ajax/Atlas无刷新技术
面向对象开发
ADO.net讨论区
控件专题讨论
51aspx站务相关
常见问题&帮助
站内活动、公告
反馈/建议
灌水/非技术
[垃圾箱/恶性广告]
实名认证申请
免费.Net主机申请
积分奖励申请
有偿服务申请
我的资料
我的主题
我的回复
我的精华
我的附件
我的收藏
基本状况
流量统计
客户软件
发帖量记录
版块排行
主题排行
发帖排行
积分排行
在线时间
帖子标题
作 者