正则表达式常用对象方法整理

本文详细介绍了JavaScript中与正则表达式相关的六个方法,包括字符串对象的search(), match(), replace(), split()方法和正则表达式对象的test(), exec()方法。通过示例解释了这些方法的功能和使用场景。
摘要由CSDN通过智能技术生成

js中正则表达式相关的方法共有六个

字符串对象的方法4个:search()、match()、replace()、split()
1、search():返回下标
返回与正则表达式查找内容匹配的第一个字符串的位置。如果找到一个匹配,search方法将返回一个整数值(匹配字符的下标),如果没有找到匹配则返回-1。

var str = 'abd123tr12'
var pattern = /[\d]+/  //一般不用全局属性g
console.log(str.search(pattern))  
//返回结果为:3

2、match():以数组的形式返回匹配的正则文本
检索字符串str,以找到一个或多个与正则表达式匹配的文本,若没有找到任何匹配的字符串,则返回null。

var str = 'abd123tr12'
var pattern = /[\d]+/g
console.log(str.match(pattern))  
//返回结果为:['123','12']

3、split():返回划分后的数组
将一个字符串分割成子字符串,然后将结果作为字符串数组返回。

var str = 'Jenny,Max,Jason,Heliy'
var pattern = /,/
console.log(str.split(pattern))  
//返回结果为:["Jenny", "Max", "Jason", "Heliy"]

4、replace():返回划分后的数组
将一个字符串分割成子字符串,然后将结果作为字符串数组返回。

var str = 'abd123tr12'
var pattern = /[\d]+/g
console.log(str.replace(pattern,'Jenny'))
//返回结果为:abdJennytrJenny

正则表达式对象的方法有2个:test()、exec()
1、test() :返回true/false
匹配字符串中是否存在与正则表达式相匹配的结果,如果存在则返回true,否则返回false。该方法常用于判断用户输入数据的合法性。

//验证邮箱的合法性
var string = '1053497171@qq.com';
var pattern= /^[a-zA-Z0-9\.\-\+\_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/
console.log(pattern.test(string))
//返回结果为:true

2、exec()
用于检索字符串中正则表达式的匹配。返回一个数组存放匹配结果,如果未找到则返回null。
exec()是一个稍微有点复杂的函数
最简单的用法,与字符串对象方法match()返回的数组相同

var str = 'I wanted to be the man that made you happy'
var pattern = /ma/
console.log(pattern.exec(str))
//返回结果:["ma", index: 19, input: "I wanted to be the man that made you happy"]
console.log(pattern.exec(str)[0]) //ma
console.log(pattern.exec(str).index)  //9
console.log(pattern.exec(str).input)  //I wanted to be the man that made you happy

exec()的返回值除了匹配到的数组外还有另外两个属性,index匹配文本的第一个字符串的位置,input被检索的字符串。

进阶用法:

var str = '我的手机号13522222222,他的手机号13288888888,她的手机号码13699999999' 
//设置正则表达式,匹配以13开头11位字符串,全局匹配 (这里是否全局匹配都不影响结果)
var reg = /13(\d)(\d{8})/g  //13(\d)(\d{8})整个正则表达式  (\d)第一个子表达式  (\d{8})第二个子表达式 
//执行exec()函数。数组的第0个元素是与整个正则表达式相匹配的文本,第一个元素是与reg的第一个子表达式相匹配的文本(如果存在的话),第二个元素是与第二个子表达式相匹配的文本,以此类推。。。
var arr = reg.exec(str)
console.log(arr)
//返回结果:["13522222222", "5", "22222222", index: 5, input: "我的手机号13522222222,他的手机号13288888888,她的手机号码13699999999"]
//循环输出结果 
for(var i=0;i<arr.length;i++){ 
    console.log(arr[i]); 
    //13522222222
    //5
    //22222222
} 

高阶用法:
当正则的匹配模式是全局时,exec()的行为就稍稍复杂些。

var str = "Penny Leonard Sheldon Howard Leonard Penny Sheldon"
var patt = new RegExp("Leonard","g") 
//patt会有一个lastIndex属性,指定开始检索的字符串位置,当exec()找到了匹配文本后,lastIndex会被设置为匹配文本的下一个字符的位置。当再也找不到匹配文本是exec()返回null,并且lastIndex被设置为0
var result
while ((result = patt.exec(str)) != null)  {
    console.log(result)
    console.log(patt.lastIndex)
    //["Leonard", index: 6, input: "Penny Leonard Sheldon Howard Leonard Penny Sheldon"]
    //13
    //["Leonard", index: 29, input: "Penny Leonard Sheldon Howard Leonard Penny Sheldon"]
    //36
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值