全回顾扫盲正则之方法描述

test方法

判断是否全是数字

var str = '354684tasd341'
var re = /\D/
console.log(re.test(str))

search方法

包含的话返回成功位置,否则返回-1.用i来标注不区分大小写

var str = 'abcde'
var re = /B/i
console.log(str.search(re))

match方法

match方法将返回一个数组,如果不存在,则返回null,用g标识符声明全局匹配

var str = '135sdfsaf351wer3135dsf1s3df8ew4rf61vx'
var re = /\d+/g
console.log(str.match(re))
// [ "135", "351", "3135", "1", "3", "8", "4", "61" ]

replace

通过replace方法进行替换,replace方法的第二个参数支持回调

var str = 'aaa'
var re = /a+/g
str = str.replace(re, 'bcd')
console.log(str)
//bcd

在replace中,第二个参数是可以设置回调的,可以接收三个参数,分别是当前匹配结果值,当前匹配结果位置,当前匹配字符串,然后return出最终值。

var str = 'adsffdaafsdsdewaaafewfewaaaa'
var re = /a+/g
str = str.replace(re, function (arg0,arg1,arg2,arg3) {
  console.log(arg0)     // 当前匹配结果值
  console.log(arg1)     // 当前匹配结果位置
  console.log(arg2)     // 当前被匹配字符串
  console.log(arg3)     // 没有了 undifined
  return '111111111111' // 最终返回替换值
})
console.log(str)

匹配子项

涉及到子项操作时,replace的第二个参数的方法参数会有变化,分别是完整匹配结果,第一个子项,第二个子项。同样需要return回要替换的返回值

var str = '2013-06-17'
var re = /(\d+)(-)/g
str = str.replace(re, function (arg0, arg1, arg2) {
  console.log(arg0) // 完整匹配结果
  console.log(arg1) // 第一个子项
  console.log(arg2) // 第二个子项
  return 'gogogo'
})
console.log(str)

随机浏览