RegExp 类型

RegExp 类型
1、正则表达式
var expression = / pattern / flags ;

pattern是正则表达式;

flags是标志,用于标明正则表达式的行为,flags有3个:
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; 

模式中的所有 元字符 都必须转义,正则表达式的元字符有:

( [ { \ ^ $ | ) ? * + .]} 
2、创建正则表达式的两个方式

(1)字面量的形式定义

var expression = / pattern / flags ;

(2)使用RegExp构造函数

var expression = new RegExp("pattern", "flags"); 

下面pattern1与pattern2等价:

var pattern1 = /[bc]at/i; 
var pattern2 = new RegExp("[bc]at", "i"); 

注意:构造函数的模式参数是字符串,所以所有元字符都要双重转义,转义过的也如此,例如:\n在字符串中要变为\n。

字面量模式等价的字符串
/[bc]at/“\[bc\]at”
/.at/“\.at”
/name/age/“name\/age”
/\d.\d{1,2}/“\d.\d{1,2}”
/\w\hello\123/“\w\\hello\\123”
3、RegExp的实例属性

以下属性可以获取有关模式的各种信息
global: 布尔值,表示是否设置了g标志
ignoreCase: 布尔值,表示是否设置了i标志
lastIndex: 整数,表示开始搜索下一个匹配项的字符位置,从0算起。
multiline: 布尔值,表示是否设置了m标志
source: 正则表达式字面量模式转为相应字符串模式

var pattern1 = /\[bc\]at/i;
alert(pattern1.global); //false
alert(pattern1.ignoreCase); //true
alert(pattern1.multiline); //false
alert(pattern1.lastIndex); //0
alert(pattern1.source); //"\[bc\]at"
var pattern2 = new RegExp("\\[bc\\]at", "i");
alert(pattern2.global); //false
alert(pattern2.ignoreCase); //true
alert(pattern2.multiline); //false
alert(pattern2.lastIndex); //0
alert(pattern2.source); //"\[bc\]at" 
4、RegExp的实例方法

(1)exec()
exec()方法接受一个参数,即要应用模式的字符串,然后返回包含第一个匹配项信息的数组,返回的数组虽然是Array实例,但是包含两个额外的属性:index(表示匹配项在字符串中的位置)、input(表示应用正则表达式的字符串),例:

var text = "mom and dad and baby";
var pattern = /mom( and dad( and baby)?)?/gi;
var matches = pattern.exec(text);
alert(matches.index); // 0
alert(matches.input); // "mom and dad and baby"
alert(matches[0]); // "mom and dad and baby"
alert(matches[1]); // " and dad and baby"
alert(matches[2]); // " and baby" 

在数组中,第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配的字符串。
在这里插入图片描述(2)test()
test()方法接收一个字符参数,在模式与该参数匹配的情况下返回true,返回false vice adverse
例:

var text = "000-00-0000";
var pattern = /\d{3}-\d{2}-\d{4}/;
if (pattern.test(text)){
 alert("The pattern was matched.");
} 

(3)toLocaleString()、toLocaleString()
这两个函数都会返回正则表达式的字面量,与创建正则表达式的方式无关。
例:

var pattern = new RegExp("\\[bc\\]at", "gi");
alert(pattern.toString()); // /\[bc\]at/gi
alert(pattern.toLocaleString()); // /\[bc\]at/gi 
5、RegExp构造函数属性

使用这些属性可以从exec()或test()执行的操作中提取更具体的信息。
例:

var text = "this has been a short summer";
var pattern = /(.)hort/g; 

if (pattern.test(text)){
 alert(RegExp.input); // this has been a short summer
 alert(RegExp.leftContext); // this has been a
 alert(RegExp.rightContext); // summer
 alert(RegExp.lastMatch); // short
 alert(RegExp.lastParen); // s
 alert(RegExp.multiline); // false
} 

例子中的长属性名都可以用相应的短属性名代替:

长属性名短属性名说明
input$_最近一次要匹配的字符串
lastMatch$&最近一次的匹配项
lastParen$+最近一次匹配的捕获组
leftContext$`input字符串中lastMatch之前的文本
multiline$*布尔值,表示是否所有表达式都使用多行文本
rightContext$’input字符串中lastMatch之后的文本

另外还有9个用于存储铺货组的构造函数属性:RegExp.$1、RegExp.$2……RegExp.$9,分别用于存储第一、第二……第九个匹配的捕获组。
例:

var text = "this has been a short summer";
var pattern = /(..)or(.)/g;

if (pattern.test(text)){
 alert(RegExp.$1); //sh
 alert(RegExp.$2); //t
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值