JS基础RegExp

一、RegExp类型

1、字面量法

var expression=/ pattern /flags;

其中模式(pattern)部分可以是任何简单或者复杂的正则表达式,每个正则表达式都可带有一个或多个标志(flags)

g:表示全局(global)模式,将应用与所有字符串。

i:表示不区分大小写(case-insensitive)模式,匹配字符串时忽略大小写。

m:表示多行(multiline)模式,到达一行文本末时还会继续查找下一行中是否存在与模式匹配的项。

/*
*匹配字符串中所有“at”的实例
*/
var pattern1=/at/g;
/*
*匹配第一个“bat”或者“cat”不区分大小写
*/
var pattern2=/[bc]at/i;
/*
*匹配所有以“at”结尾的3个字符的组合,不区分大小写
*/var pattern3=/.at/gi;

 模式中使用的所有元字符都必须转义。正则表达式中的元字符包括:

([{\^$|)?*+.]}

如果要匹配这些字符,就需要对他们进行转义,转义用"\"来进行

*匹配第一个“bat”或者“cat”不区分大小写
*/
var pattern1=/[bc]at/i;
/*
*匹配第一个“[bc]at”,不区分大小写
*/
var pattern2=/\[bc\]at/i;
/*
*匹配所有以“at”结尾的3个字符的组合,不区分大小写
*/var pattern3=/.at/gi;
/*
*匹配所有“.at”,不区分大小写
*/var pattern4=/\.at/gi;

2、构造函数法

其中特殊字符的转义用“\\”表示

/*
*匹配第一个“bat”或者“cat”不区分大小写
*/
var pattern1=/[bc]at/i;

/*
*与pattern1相同,只不过是用构造函数创建的
*/
var pattern2=new RegExp("[bc]at","i");

构造函数法中,对于元字符,用//进行转义

使用正则表达式字面量与使用RegExp构造函数创建的正则表达式不一样。正则表达式字面量始终会共享一个RegExp实例,而使用构造函数创建的每一个新RegExp实例都是一个新实例

二、RegExp实例属性

 RegEXp的每个实例都有下列属性

  • global:布尔值,表示是否设置了g标志。
  • ignoreCase:布尔值,表示是否设置了i标志。
  • lastIndex:整数,表示开始搜索下一个匹配项的字符位置,从0算起。
  • multiline:布尔值,表示是否设置了m标志。
  • source:正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返回。

三、RegExp实例方法

1、exec(),该方法是专门为捕获组而设计的,exec()接收一个参数,即要应用模式的字符串,然后返回包含第一个匹配信息的数组;或者在没有匹配项的情况下返回null

var text="mom and dad and baby";
var pattern=/mom(and dad(and baby)?)?/gi;

 2、toString()和toLocaleString()返回正则表达式字面量,与创建正则表达式的方式无关

四、RegExp构造函数属性

五、模式的局限性

虽说js的正则表达式功能比较完备,但任然缺少高级正则表达式的特性,这里就不一一介绍了。

原文地址:https://www.cnblogs.com/taryn/p/5754979.html