javascript正则表达式学习笔记

本文详细介绍了JavaScript中正则表达式的使用方法,包括声明方式、常用模式、RegExp对象的属性与方法,以及String对象中支持正则表达式的方法等。通过实例帮助读者更好地理解和运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、js中正则表达式的声明
var reg = /abc/;
var reg2 = new RegExp('abc');

2、正则表达式常用的三种模式
i ignoreCase 忽略大小写
g global 全局匹配(正常情况下,正则表达式发现第一个匹配项就停止工作,而/g模式下会继续查找)
m multiline 多行匹配

var reg = /a/i;
或 var reg = new RegExp("a","i"); //二者等价,匹配第一个a或者A

三者可以混用,如 /ab/ig

3、RegExp对象的属性
属性:global 是否设置/g属性
ignoreCase 是否设置/i属性
multiline 是否设置/m属性
lastIndex
source 正则表达式所对应的字符串

4、RegExp对象的方法
exec(string) 返回一个数组,没有匹配则返回null.虽然是数组,但一般情况下只返回的第一个匹配项。这个数组有两个特殊的属性index,input
test(string) 返回boolean,如果存在匹配的字符串,则true,反之false

var reg = /a/;
var text = "xyzabcdea";
alert(reg.lastIndex); // 0 <line:3>
var matches = reg.exec(text);
alert(matches.length);//1
alert(matches.index) //3,匹配字符的索引
alert(matches.input) //"xyzabcdea" exec传入的字符串
alert(reg.lastIndex); // 4 结合<line:3>
//当没有匹配时,lastIndex=0,当执行完一次匹配时,因为匹配的字符串的索引为3,所以lastIndex=4,从最后匹配的下一上字符开始查找

再来理解/g模式
var reg = /a/;
var text = "xyzabcdea";
var matches = reg.exec(text);
alert(matches.index) //3
var matches = reg.exec(text);
alert(matches.index) //3
//两次输出都为3,虽然执行了两次exec(),但是匹配的都是同一个a

如果改为/g模式,则会查找所有匹配的字符
var reg = /a/g;
var matches = reg.exec(text);
alert(matches.index) //3
var matches = reg.exec(text);
alert(matches.index) //8

再来理解/m模式
var reg = /a/;
var text = "xyzab\ncdea";
var matches = reg.exec(text);
alert(matches.index) //3
var matches = reg.exec(text);
alert(matches.index) //3

5、支持正则表达式的 String 对象的方法

match 返回一个数组,找到一个或多个正则表达式的匹配。
search 返回匹配字符的索引,没有返回-1。
replace 替换与正则表达式匹配的子串。
split 把字符串分割为字符串数组。

var reg = /a/ig;
var text = 'abcabcA';
alert(text.match(reg));//a,a,A

var reg = /a/;
var text = 'abcabcA';
alert(text.search(reg));//0

注意的是search()方法不支持全局匹配正规表达式(带参数g)。无论查找几次,都找到的是第一个,没有找到返回-1
其实search()跟indexOf()功能差不多,只不过前者支持正则表达式,后者不支持
var reg = /a/g;
var text = 'abcabcA';
alert(text.search(reg));//0
alert(text.search(reg));//0

var reg = /a/;
var text = 'abcabcA';
alert(text.replace(reg,'b'));//bbcabcA

var reg = /a/ig;
var text = 'abcabcA';
alert(text.replace(reg,'b'));//bbcbbcb

//replace第二个参数可以是个函数
var reg = /[<>]/g;
var text = '<html></html>';
alert(text.replace(reg,function(match,pos,originalText){
switch(match){
case "<":
return "<";
case ">":
return ">";
}
}));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值