说明
支持正则表达式的 String 方法:
- search() 检索与正则表达式相匹配的值。
- match() 找到一个或多个正则表达式的匹配。
- replace() 替换与正则表达式匹配的子串。
- split() 把字符串分割为字符串数组。
search()
字符串查找,类似 indexOf(),但支持 正则表达式
例子
查找字符串是否有 图片
var s = "1.mp3 2.png 3.gif 4.jpg 5.mp4"
var pos = s.search(/\.jpg|\.png|\.gif/)
console.log(pos)
查找域名
var s = "o www.baidu.com x www.taobao.com iewfow"
var pos = s.search(/www\.[a-z]+\.com/)
console.log(pos)
match()
将符合正则表达式的内容,提取出来,组成数组,并返回该数组
返回值:
- 如果有匹配内容,提取出来,组成数组,并返回该数组
- 如果没有匹配内容,就返回
null(注意)
注意:一般使用 g 全局模式,可以提取所有符合正则表达式的内容。否则只提取第一个
例子
提取字符串中,所有的年龄
var s = "李雷20岁,韩梅梅21岁,lucy 22岁,lili 22 岁"
var arr = s.match(/[0-9]+/g)
console.log(arr)
执行结果:
['20', '21', '22', '22']
没有匹配内容
var s = "李雷,韩梅梅,lucy,lili"
var arr = s.match(/[0-9]+/g)
console.log(arr)
执行结果:
null
复杂案例
var s = "o www.baidu.com x www.taobao.com iewfow"
// 最后面的 g,表示全局,可以提取所有符合正则表达式的内容。否则只提取第一个
var arr = s.match(/www\.[a-z]+\.com/g)
console.log(arr)
执行结果:
['www.baidu.com', 'www.taobao.com']
replace()
将符合正则表达式的字符串,替换成另一个字符串
注意:一般使用 g 全局模式,可以提取所有符合正则表达式的内容。否则只提取第一个
例子
将李雷替换成张三
var s = "李雷22岁,李雷今年毕业"
var s2 = s.replace("李雷","张三") // 只会将第一个李雷替换成张三
console.log("s2:",s2)
var s3 = s.replace(/李雷/g,"张三") // 将所有李雷替换成张三
console.log("s3:",s3)
例子
将字符串中的 域名 替换成 www.malaoshi.top
var s = "o www.baidu.com x www.taobao.com iewfow"
// 最后面的 g,表示全局,可以提取所有符合正则表达式的内容。否则只提取第一个
var res = s.replace(/www\.[a-z]+\.com/g,"www.malaoshi.top")
console.log(res)
split()
根据指定的字符串拆分,返回数组。
但是,当遇到字符串 "1a2b3c4",根据字母拆分数组时,就需要用到 正则表达式
例子
按照字母拆分
var s = "1a2b3c4"
var arr = s.split(/[a-z]/)
复杂案例
按照字母、空格、制表符、, 进行拆分,最后提取的是数字
var s = "Lilei is 20,Hanmeimei is 21,lucy is 22,lili is 22"
var arr = s.split(/[a-zA-Z,\s]+/)
console.log(arr)
注意:字符串开头、结尾有匹配的内容,那么返回数组中,第一个元素、最后一个元素就会有空字符串 ''