JS正则表达式基础

正则表达式表示一种字符匹配模式,在两个/   ...  / 定界符之间的部分就是匹配模式,用来检查一个字符串是否有某种你需要的子字符串,可以返回或替换。


以下是几类匹配符:

Ⅰ.任意字符型:

1.[ .... ]里面是字符列表,如[abc]匹配的是abc中的任意一个字符(只能一个),也可以[a-d]这样表示,表示a到d之间所有字母的任意一个

2. [ ^... ] 是字符补集,^表示取补集,如[ ^abc ]表示匹配除了abc之外的所有字符

3.\d 匹配任意一个数字,等价于[0-9]

4.\D匹配任意一个非数字,等价于[^0-9]

5.\w 匹配任意一个数字或字母或下划线的字符,等价于[A-Za-z0-9_]

6.\W 匹配任意一个非数字和字母和下划线的字符,等价于[^A-Za-z0-9_]

7. .(小数点) 可以匹配初换行符以外所有字符


Ⅱ.特定字符型:

1.[\b] 匹配一个空格,注意与\b不同

2.\f 匹配一个表单符,\n 匹配一个换行符,\t 匹配一个制表符,\v 匹配一个顶头制表符

3.\s 匹配一个white,等价于[\f\n\r\t\v]

4.\S 匹配 \s的补集

5.\x 两位十六进制,这两位十六进制表示ASCII码,用来表示相应ASCII的字符


Ⅲ.限制型:

1.  ^a 表示匹配的字符必须在最前面,如^a能匹配"abc",不能匹配"cba"

2.  a$ 表示匹配的字符必须在最后面,如a$能匹配"cba",不能匹配"abc"

3.   a{ n }表示匹配连续出现前面的字符n次的字符,不能多也不能少,(注意一个{ }只表示一个字符,如fo{ 3 }值对o有效,f是没有限制的,以下相同)

4.   a{ n , }表示表示匹配前面的字符至少连续出现n次的字符,可以多但不能少

5.   a{ n ,m }表示匹配前面的字符不少于n个但不多于m次的字符,有上下限制

6.   a* 表示匹配前面的字面出现0次或n次的字符,也就是出现不出现都可以,等价于[ 0 , ]

7.   a表示匹配前面的字面出现1次或n次的字符,等价于[ 1 , ]

8.   a表示匹配前面的字面出现0次或1次的字符,等价于[ 0 , 1]

9.  \b 表示匹配一个单词分界线,可以是开头,结尾或者空格,比如/\bn /可以匹配 nature 或者 say no 中的n

10.  \B表示匹配一个单词的非分界线,如\Ba 就表示a不能开头也不能在空格后,a\B表示不能在结尾也不能在空格前

11. abc|efg 选择匹配器,可以匹配abc或者efg,不限制是单个字符,优先找到左边的

12. (  )表示记录括号内匹配到的东西,能为RegExp对象的$1 $2 $3找到



在JS中正则表达式是由RegExp对象表示的,可以用new RegExp("   " , "标记"); 来创建也可以直接reg=/    /标记 ; 来表示,如 reg=new RegExp("a+b","gi"); 或 reg=/a=b/gi  ,每一条正则表达式对应一个RegExp实例,常用的标记有g和i :如果没有设置g标志,每次正则表达式匹配都会只返回最早匹配到了的内容,但如果设置了g标志,一次匹配之后就会记录这个点,下次匹配就能从下一个匹配内容开始,在执行搜索或替换时,对所有匹配部分起作用;如果设置i标志,将忽略大小写。

RegExp有如下几个常用的方法:

1.reg.exec( str )  方法

该方法永远返回一个单元素的数组,这个元素就是匹配的字符串,如果没有找到匹配则返回null,如果不设置g属性,则永远只返回第一个匹配到的内容

2.reg.test( str ) 方法

该方法返回一个boolean值,true表示找到匹配,false表示没找到

3.str.match( reg) 方法

该方法是以字符串为对象,如果没有找到匹配对象,返回null,如果找到匹配对象返回一个数组,没有设置g属性的话数组里只有最早找到那一个字符串,如果设置了g属性,则返回所有找到的字符串。

4.str.search.(reg)方法

该方法也是以字符串为对象,返回的是找到的匹配的字符串偏移位置,从0开始,中文字符也算一个字符(不是按字节数来),如果没找到匹配返回-1

5.newstr= str.repalce(reg,"$2$1");  方法

该方法用来替换搜索到的内容,返回的修改后的字符串,关于$的用法:首先使用括号查询到的匹配字符串可以用$1 $2访问到,$1-$9分别表示从先到后匹配到的字符串,当然也可以用其他内容替换

6.arr = str.split(分割标识符 , [limit] );  方法

该方法用来按分割标识符来分割字符串,limit表示返回的元素数





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值