posts - 167,  comments - 30,  trackbacks - 0

在学习javascript中正则是经常使用的,在正则中的特殊符号,需要转义等,下面对正则中的转义和特殊字符进行介绍

首先是元字符,意思是,在使用这些字符时,必须使用转义字符,负责会出错.
元字符有:()[]{}\^$|?*
任何时候用在正则表达式中用到以上字符必须进行转义.
举例:假如匹配?这个字符
var re = /\?/;
或者
var re = new RegExp("\\?");
正则中的特殊符号:    
注意到第二个正则,当用到\的时候,多用了\来进行转义\ 最后达到两个\\,叫做双重转义
其次 特殊符号
在则会功能则中可以使用ASCII代码也可以用Unicode代码.
当用字符用十六进制表示时,在字符签名必须加上\x
当用八进制时,在紫府前必须加上 \
当用Unicode编码表示是必须加上 \
还有其它一些特殊符号
字符      说明
\t  制表符
\n  换行符
\r  回车符
\a  换页符
\e  alert字符
\cX escape字符
\b  与X相对应的字符
\v  回退字符
\0  空字符
如果用RegExp构造函数来使用它们,则必须使用双重转义.
以上就是正则中的特殊符号


正则表达之字符类:

先说一下字符类的意思,字符类是用于测试的字符组合.字符类是放到中括号[]中的,可以有效的告诉正则去匹配.在字符类又分为五个简单的类,分别说一下
1.简单类
简单类就是你想要匹配的字母组
举例说明
var _class = /[abc]de/gi;
上面的一个字符类就是一个简单的类,可以匹配ade,bde,cde.三种,后面的g和i分别是全局和不区分大小写.
再简单类中还可以使用unicode编码
var _class = /[a\u0062c]de/gi;
这个跟上面的一样,可以匹配ade,bde,cde.三种,后面的g和i分别是全局和不区分大小写.
2.负向类
负向类就是你要排除的字母,用上尖号(^)表示负向类
举例//www.forasp.cn 转载请注明
var _class = /[^abc]de/gi;
用了负向类^就排除了a,b,c三个开头的字符串,即 ade,bde,cde都不匹配
3.范围类
范围类即指定从一个字符到另一个字符的范围,用中杠(-)表示.
举例
var _class = /[a-c]de/gi;//这就是表示从a到c,即,abc都匹配
上面的就匹配了ade,bde,cde.三种.也可以加上负向类表示不匹配
var _class = /[^a-c]de/gi;//这就是表示从a到c,即,abc都不匹配
4.组合类
组合类是有几种其它类的组合而合成的字符类.
举例
var _class = /[1-9a-c]/gi;
上面的表达式就是1-9或者a-c均能匹配,列举1,2,3,4,5,6,7,8,9,a,b,c
在此 要注意的是字符内部类之间不能有空格.还有不能有交叉.
5.预定义类//www.forasp.cn 转载请注明
预定义类就是将复杂的组合类预定义成特定的代码.
列举了javascrip中的预定义类
代码   等同于  匹配
.    [^\n\r]  出了换行和回车以外的任何字符
\d   [0-9]    数字
\D   [^0-9]   非数字
\s   [ \t\n\xB\f\r]  空白字符
\S   [^ \t\n\xB\f\r] 非空白字符
\w   [a-zA-Z_0-9]  单词字符,包括字母下划线和数字
\W   [^a-zA-Z_0-9]  非单词字符

以上就是常用的正则表达式的字符类,常用谨记

====================
正则表达之量词

正则表达式中的量词,规定了特定的字符串出现的次数.当指定某个模式应当出现的出售时,可以指定硬性数量.
可以说分为两类量词
1.简单量词,如下标识
代码   描述
?     出现零次或者一次
*     出现任意次数
+     至少出现一次
{n}   一定出现n次
{n,m} 至少出现n次最多出现m次
{n,}  至少出现n次
举例说明以上的标识,gi是全局部分大小写,下面就不说gi了.
var foraspcn = /[ab]?c/gi;//匹配 c,ac,bc
var foraspcn = /[ab]*c/gi;//匹配 c,aac,bbc...
var foraspcn = /[ab]+c/gi;//匹配 ac,bc,aac,bbc..
var foraspcn = /[ab]{1}c/gi;//匹配 ac,bc
var foraspcn = /[ab]{1,2}c/gi;//匹配 ac,bc,aac,bbc
var foraspcn = /[ab]{1,}c/gi;//匹配 ac,bc,aac,bbc...
看看看懂没有,有的时候有的是相等的比如
?就等于{0,1}
*等于{0,}
+等于{1,}
2.贪婪的,惰性的,支配性的量词
首先解释一下三种量词.
贪婪量词就是先看整个字符串师傅匹配,如果没有,则去掉字符串最后一个字符,再次匹配.一直到发现最后一个匹配或者字符串不剩下任何字符.目前的量词都是贪婪的.
惰性量词是首先看第一个字符是否匹配,如果单独这一个字符不够,则读入下一个,与组成两个字符去匹配,如果没有发现再次读取下一个字符,直到发现匹配或者整个字符串都没有匹配.惰性和贪婪正好相反.
支配量词擦好难过时匹配整个字符串,如果不匹配则不再尝试.支配量词就是整体匹配一次.$hidden$

贪婪的,惰性的,支配性的量词 表如下
贪婪的 惰性的 支配性 描述
?      ??     ?+    零次或者一次出现
*      *?     *+    零次或者多次出现
+      +?     ++    至少一次出现
{n}    {n}?   {n}+  正好n次出现
{n,m}  {n,m}? {n,m}+至少n次出现,至多m次出现
{n,}   {n,}?  {n,}+ 至少n次出现

以上就是正则中量词的相关内容

posted on 2010-12-30 15:40 David1228 阅读(405) 评论(0)  编辑  收藏 所属分类: 正则

只有注册用户登录后才能发表评论。


网站导航:
 

<2010年12月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿(3)

随笔分类

随笔档案

文章档案

新闻分类

新闻档案

相册

收藏夹

Java

Linux知识相关

Spring相关

云计算/Linux/虚拟化技术/

友情博客

多线程并发编程

开源技术

持久层技术相关

搜索

  •  

积分与排名

  • 积分 - 346642
  • 排名 - 154

最新评论

阅读排行榜

评论排行榜