js正则表达式

正则的图形工具

regexper.com

REGEXP对象

1.字面量声明正则表达式

var reg=/\bis\b/g;

2.构造函数

var reg=new RegExp('\\bis\\b','g');//反斜线是特殊字符,构造函数的时候要转义

修饰符g,i,m

1.g:global全文搜索,不添加的话,搜索到第一个匹配停止
2.i:ignore case 忽略大小写,默认大小写敏感
3.m:multiple lines多行搜索

元字符

正则表达式由两种基本字符类型组成:原义文本字符和元字符
元字符是在正则表达式中有特殊含义的非字母字符(. * + ? $ ^ | \ () {} [])
?匹配0次或1次
+匹配一次或多次
.匹配0次或多次

在量词后面加上?之后就是非贪婪模式,默认情况下采用贪婪模式。

分组

使用()可以达到分组的功能,使量词作用于分组;
使用分组之后可以通过$1,$2来捕获分组;
如果不想捕获这个分组,那么只需要在括号内加入?:即可。

前瞻

正则表达式从文本头部向尾部开始解析,文本尾部方向,称为“前”
前瞻就是在正则表达式匹配到规则的时候,向前检查是否符合断言,后顾/后瞻方向相反。
js不支持后顾
断言不参与匹配?=正向前瞻 ?!负向前瞻

方法(正则表达式)

1.RegExp.prototype.test(str)
用来测试字符串参数中是否存在匹配正则表达式模式的字符串

在用test方法时,如果正则的匹配模式是global的话,那么会影响匹配结果(lastIndex会返回最后一次匹配时的结果),所以在用test方法时,正则中一般不要加g标志

2.RegExp.prototype.exec(str)
使用正则表达式模式对字符串执行搜索,并将更新全局RegExp对象的属性以反映匹配结果。
如果没有匹配的文本则返回null,否则返回一个结果数组

方法(字符串)

1.String.prototype.search(reg)
search()方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串
方法返回第一个匹配结果index,查找不到返回-1
search()方法不执行全局匹配,它将忽略标志g,并且总是从字符串的开始进行检索
2.String.prototype.match(reg)
match()方法将检索字符串,以找到一个或多个与regexp匹配的文本
regexp是否具有标志g对结果影响很大
3.String.prototype.split(reg)
在一些复杂的分割情况下我们可以使用正则表达式解决

'a1b2c3d'.split(/\d/);['a','b','c','d']

4.String.prototype.replace()
String.prototype.replace(str,str)
String.prototype.replace(reg,str)
String.prototype.replace(reg,function(){})

你可能感兴趣的:(js正则表达式)