Javascript RegExp正则表达式学习笔记


什么事正则表达式:正则表达式就是一个描述通用模型的字符串对象。

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


一、语法

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:

Expression Description
[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

元字符具有通用的匹配意义:

Metacharacter Description
. 匹配单个字符,除了换行符和行结束符
\w 匹配单词字符(word)
\W 匹配非空白字符
\d 匹配数字字符(digit)
\D 匹配非数字字符(digit)
\s 匹配空白字符(whitespace)
\S 匹配非空白字符
\b 匹配开始或结束单词
\B 匹配非开始或结束单词
\0 Find a NUL character
\n 匹配换行符
\f Find a form feed character
\r Find a carriage return character
\t Find a tab character
\v Find a vertical tab character
\xxx Find the character specified by an octal number xxx
\xdd Find the character specified by a hexadecimal number dd
\uxxxx Find 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);
匹配值:, , ,









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


6、正则对象的一些属性

Property Description
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]




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值