您的位置:首页 > Web前端 > JavaScript

Javascript RegExp正则表达式学习笔记

2011-10-01 15:25 627 查看
什么事正则表达式:正则表达式就是一个描述通用模型的字符串对象。

正则表达式可以干什么:可以用来进行查找文本中的字符串、转换、格式化、检查、替换、截取等操作。功能是不可小觑啊。

一、语法

a)、比如说要在一段文本中进行一个字符的查找,那肯定就得指定按照什么样的规则来查找,这个规则就是pattern了。在查找的过程中如果还有一些需求比如想忽略大小写,或全文查找那就得指定一个修饰符参数了,这就是modifier了。好了,现在就来说明一下创建正则表达式的两种方法。
1、使用new关键字创建。
var regObject = new RegExp(pattern,modifiers) ;
2、直接静态指定。(更常用一些,注意一点在使用patter时不要忘了前后的斜线)
var regObject = /pattern/mofifiers ;


b)、正则表达式中的一些参数和方法
1、modifier参数
i(case-insensitive)表示忽略大小写。举一个例子。
var str = "I am akwolf!!!" ;
var patt = /i/ ;
var ts = str.match(patt) ;
document.write(ts) ;


返回的结果为null

加上i修饰符
var str = "I am akwolf!!!" ;
var patt = /i/i ;
var ts = str.match(patt) ;
document.write(ts) ;


返回的结果为I

g(global)表示全局匹配。
不加g修饰符例子:
var str = "I am akwolf!!!" ;
var patt = /a/ ;
var ts = str.match(patt) ;
document.write(ts) ;


返回的结果为a

加上g修饰符:
var str = "I am akwolf!!!" ;
var patt = /a/ig ;
var ts = str.match(patt) ;
document.write(ts) ;


返回结果为a,a

m(multiline)表示匹配多行

2、一些方法
string.match(patt) 返回匹配的值。
patt.test(string) 返回是否匹配成功 的boolean值
patt.exec(string) 返回匹配成功的值,与match的用法大体相同

patt.compile(regexp,modifier) 重新指定匹配规则

3、用方括号括起来的匹配规则


Brackets

Brackets are used to find a range of characters:
ExpressionDescription
[a-c]返回与方括号中范围能匹配到的字符
[^a-c]返回除与方括号中范围匹配到的字符
[0-9]返回数字
[A-Z]返回A到Z之间的字符
[a-z]返回a到z之间的字符
[A-z]返回A到z之间的字符(在Ascii码中大写字母的码值比小写的码值要小)
[adgk]返回与方括号中能匹配到的字符
[^adgk]返回除与方括号中匹配到的字符
(red|blue|green)返回指定的替换值
例子:
var str = "I am akwolf!!!";
            var patt = /[^a-h]/ig;	//匹配a-h之间的字符
            var ts = str.match(patt);
            document.write(ts);        
匹配值:a,a,f
            var str = "I am akwolf!!!";
            var patt = /[^a-h]/ig;	//匹配非a-h之间的字符
            var ts = str.match(patt);
            document.write(ts);
匹配值:I, ,m, ,k,w,o,l,!,!,!

			var str = "19900704" ;
            var patt = /[0-5]/ig;	//匹配0-5之间的字符
            var ts = str.match(patt);
            document.write(ts);
匹配值:1,0,0,0,4

			var str = "19900704" ;
            var patt = /[^0-5]/ig;	//匹配6-9之间的字符
            var ts = str.match(patt);
            document.write(ts);
匹配值:9,9,7

            var str = "I am akwolf!!!";
            var patt = /[A-z]/ig;	//匹配所有单词之间的字符
            var ts = str.match(patt);
            document.write(ts);
匹配值:I,a,m,a,k,w,o,l,f

            var str = "I am akwolf!!!";
            var patt = /[ak]/ig;	//匹配a,k的字符
            var ts = str.match(patt);
            document.write(ts);
匹配值:a,a,k

            var str = "I am akwolf!!!";
            var patt = /[ak]/ig;	//匹配非a,k的字符
            var ts = str.match(patt);
            document.write(ts);
匹配值:I, ,m, ,w,o,l,f,!,!,!

            var str = "I am akwolf!!!";
            var patt = /(ak)/ig;	//匹配ak的字符
            var ts = str.match(patt);
            document.write(ts);
匹配值:ak
4、元字符


Metacharacters

元字符具有通用的匹配意义:
MetacharacterDescription
.匹配单个字符,除了换行符和行结束符
\w匹配单词字符(word)
\W匹配非空白字符
\d匹配数字字符(digit)
\D匹配非数字字符(digit)
\s匹配空白字符(whitespace)
\S匹配非空白字符
\b匹配开始或结束单词
\B匹配非开始或结束单词
\0Find a NUL character
\n匹配换行符
\fFind a form feed character
\rFind a carriage return character
\tFind a tab character
\vFind a vertical tab character
\xxxFind the character specified by an octal number xxx
\xddFind the character specified by a hexadecimal number dd
\uxxxxFind the Unicode character specified by a hexadecimal number xxxx
例子:
var str = "I am akwolf!!!#$%%^^@*&";
            var patt = /./ig;	//匹配除了换行符和行结束符的字符
            var ts = str.match(patt);
            document.write(ts);
匹配值:I, ,a,m, ,a,k,w,o,l,f,!,!,!,#,$,%,%,^,^,@,*,&
            var str = "I am akwolf!!!#$%%^^@*&";
            var patt = /\w/ig;	//匹配单词字符,注意反斜杠(\)不可少
            var ts = str.match(patt);
            document.write(ts);
匹配值:I,a,m,a,k,w,o,l,f
            var str = "I am akwolf!!!#$%%^^@*&19900704";
            var patt = /\d/ig; //匹配数字字符
            var ts = str.match(patt);
            document.write(ts);
匹配值:1,9,9,0,0,7,0,4

            var str = "I am akwolf!!!#$%%^^@*&1990 07 04";
            var patt = /\s/ig;	//匹配空白字符
            var ts = str.match(patt);
            document.write(ts);
匹配值:, , ,



[code]








5、数量表示词

量词描述
n+匹配n至少一次
n*匹配n任意次
n?匹配n出现0或一次
n{X}匹配n出现指定的次数
n{X,Y}匹配n出现x到y之间的次数
n{X,}匹配n至少出现x次
n$匹配以n结尾的字符
^n匹配以n开头的字符
?=n匹配后面接着指定的字符n的字符
?!n匹配后面接着非指定的字符n的字符
例子:
//?=n 就是匹配出一个值,它的后面接着的是不是指定的n 如我想找出包含m的字符条件是其后面接的是akwolf
var str = "I am akwolf !!!#$%%^^@*&1990 07 04 new line";
var patt = /am(?= akwolf)/;
var ts = str.match(patt);
document.write(ts);
匹配值:am[/code]


6、正则对象的一些属性

PropertyDescription
global由于检测g修饰符是否指定
ignoreCase由于检测i修饰符是否指定
lastIndex返回匹配成功字符串的最后一个单词的索引
multiline由于检测m修饰符是否指定
source返回指定的正则匹配规则
例子:
var patt = /am(?= akwolf)/;	
            document.write(patt.global);
匹配值:false
            var patt = /am(?= akwolf)/i;	
            document.write(patt.ignoreCase);
匹配值:true
            var str = "I am akwolf !!!#$%%^^@*&1990 07 04 new line";
            var patt = /[0-9]/ig;
			if(patt.test(str)){
				document.write(patt.lastIndex);
			}
匹配值:25
            var patt = /[0-9]/ig;
			document.write(patt.source);
匹配值:[0-9]


更多请参看http://www.w3schools.com/jsref/jsref_obj_regexp.asp
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: