js的正则表达式

正则表达式测试网站:https://regexper.com/

前端调试网站:http://jsbin.com/xicayoligi/edit?js,console

1    RegExp初始化

js通过内置对象RegExp支持正则表达式,有两种方法实例化RegExp对象

1、使用自变量

var reg = /\bis\b/g;

2、使用构造函数

var reg = new RegExp('\\bis\\b','g');

2    修饰符

g:global,全文搜索,不添加,搜索到第一个匹配为止

i:ignore case,忽略大小写,默认大小写敏感

m:multiple lines,多行搜索

3    元字符

正则表达式由两种基本字符类型组成:

  • 原义文本字符
  • 元字符

含义:元字符是有特殊含义的非字母字符,例如:\b

3.1    字符类

[ ]匹配一类字符

222901_u6oT_3356488.png

字符取反

223020_ds2a_3356488.png

3.2    范围类

“-”用在[ ]中表示范围

223241_BYv7_3356488.png

223414_n8sA_3356488.png

3.3    预定义类

223744_L68o_3356488.png

3.4    边界

224152_GiQK_3356488.png

3.5    量词

225313_GzZS_3356488.png

3.6    贪婪模式和非贪婪模式

默认是贪婪模式,在量词后面加?即可变为非贪婪模式

231013_lIec_3356488.png

4    分组

( )可以分组,使量词作用于分组

231349_5Gmo_3356488.png

4.1    或

| 可以表示或

232041_XobR_3356488.png

4.2 反向引用

用括号捕获分组

232543_WKHJ_3356488.png

用?:忽略分组

232818_B25J_3356488.png

5    前瞻

正则表达式在匹配到规则时,向前检查是否符合断言,这就是前瞻;符合为正向匹配,反之为负向匹配。

233206_a32B_3356488.png

示例:

233907_Ig4f_3356488.png

6    JS对象

6.1    属性

global:是否全文搜索,默认false

ignoreCase:是否大小写敏感,默认false

multiline:多行搜索,默认false

lastIndex:正则表达式匹配内容的最后一个字符的下一个位置

source:正则表达式的文本字符串

6.2    方法

RegExp.prototype.test(str)

用于测试str中是否存在匹配正则表达式的字符串,若存在返回ture,否则返回false

例子:

235334_yXOG_3356488.png

如果是全局搜索,每一次搜索就是从lastIndex处开始匹配

000503_5Rmf_3356488.png

RegExp.prototype.exec(str)

匹配到就返回一个数组,反之为null

数组里边的变量含义为:

[匹配到的字符串,分组一,分组二...分组n]

示例1:

104451_d2OT_3356488.png

运行两次结果:

104518_tV8F_3356488.png

可以看出,非全局下lastIndex不生效

示例2:

104708_cW4Z_3356488.png

运行结果:

104725_8puq_3356488.png

匹配到两个字符串,lastIndex是在匹配到的字符串的下一位的序号,index则是匹配到的字符串的第一位的序号,后面是exec返回的数组

7    字符串对象方法

String.prototype.search(reg)

检索字符串,忽略全局匹配,方法返回匹配结果index,否则返回-1

例子:

110754_Iz8o_3356488.png

String.prototype.match(reg)

返回数组,反之null;非全局调用和exec()一样,返回[匹配到的字符串,分组一,分组二...分组n]这种形式,全局调用下返回一个由匹配字符串组成的数组

例子:

111049_0wuY_3356488.png

String.prototype.split(reg)

返回数组

174505_cNQ8_3356488.png

String.prototype.replace(reg,str)

替换字符串

175314_R6Zy_3356488.png

String.prototype.replace(reg,function(match,group1,group2...groupN,index,origin) {})

替换字符串

180953_NKn7_3356488.png

转载于:https://my.oschina.net/winstoncopy/blog/1509638

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值