JavaScript教程:正则表达式与search()、match()、replace()、split()

说明

支持正则表达式的 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)

注意:字符串开头、结尾有匹配的内容,那么返回数组中,第一个元素、最后一个元素就会有空字符串 ''


原文出处:/show_1IX3AqS3xpwQ.html