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]



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值