JavaScript 正则表达式

String类型对正则表达式的支持

string类型共有四种方法支持正则表达式;并且同时支持字符串匹配;

  • search()
  • replace()
  • match()
  • split()

search和match会将参数 字符串 转为 正则表达式,再匹配;
如果要匹配 ()[]等字符,转换为正则时会失去字符本意;

replace和split则不会转换

search(regexp/substr)

search的参数:正则表达式 或 字符串(会通过RegExp构造函数将其转为正则)
search不支持全局:g,支持忽略大小写 i
返回值:匹配则返回 第一个 与之匹配的子串的开始位置;未匹配返回 -1

var str = '1234abcd'
str.search('23') // 1
str.search('(23)') // 1转为正则 \(23)\
str.search('\(23\)') // 1 转为正则 /(23)/
str.search('\\(23\\)') // -1 转为正则 /\(23\)/
str.search('Ab') // -1
str.search(/Ab/i) // 4

replace(regexp/substr,replacestr)

功能1:用于对字符串进行替换,返回新字符串,不改变原字符串

var str = '1234ab2d'
str.replace(/2/gi,'H') //1H34abHd

功能2:与 () & 一起使用可以对匹配子串进行非完全替换
正则表达式括号()中的内容会被记忆为 $1,$2...$n,从1开始
& 的详细功能参考说明

//将匹配到的第一处非完全替换
str='1b2b2b2'
str.replace(/b(2)/,'U$1VW') //"1U2VWb2b2"
//不将字符串转为正则
str.replace('b(2)','U$1VW')// 1b2b2b2

功能3:第二个参数为函数,对匹配到的子串处理后替换;没有return则返回undefined

var str = '2bb3bb'
str.replace(/\d/g,function(...arr){
    console.log(arr)
    return 'A'
})
// ["2", 0, "2bb3bb"] 由此可见函数的每个参数是什么
// ["3", 3, "2bb3bb"]
// AbbAbb

match(regexp/substr)

以数组形式返回被匹配到的文本

全局匹配:

返回所有被匹配的子串组成的数组

var str = '1a2b3c'
str.match(/\d/g) // ["1", "2", "3"]

非全局匹配

返回数组,arr[0]是第一次被匹配到的子串
arr[n]为正则表达式括号中的值,从1开始
arr[n+1] 被匹配到的子串开始位置
arr[n+2] 做匹配的字符串

var str = '1a2b3c'

str.match(/\d/) 
// ["1", index: 0, input: "1a2b3c", groups: undefined]

str.match(/a(2)b(3)/)
// ["a2b3", "2", "3", index: 1, 
// input: "1a2b3c", groups: undefined]

str.match('a(2)b(3)') //先将字符串转换为正则表达式
// ["a2b3", "2", "3", index: 1, 
// input: "1a2b3c", groups: undefined]

split(regexp/substr)

全局进行匹配,以匹配到的部分为分割线,将未匹配部分转为数组;返回数组

用法参考

补充:indexOf()

不支持正则表达式匹配
该方法支持字符串和数组,返回匹配到的位置,或者-1

var  aa = '12345'
aa.indexOf(/3/) // -1 不支持正则表达式
aa.indexOf('3') // 2

RegExp的匹配方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值