正则表达式(regular expression)是一种表达文本模式(即字符串结构)的方法,有点像字符串的模板,常常用来按照“给定模式”匹配文本
新建一个正则表达式:
var reg= /xyz/; 或者 var reg = new RegExp(‘xyz’);
它们的主要区别是,第一种方法在引擎编译代码时,就会新建正则表达式,第二种方法在运行时新建正则表达式,所以前者的效率较高。
实例方法:
test:一个字符串中测试是否匹配的RegExp方法,它返回true或者false;
/cat/.test('cats and dogs') // true
exec:一个字符串中执行查找匹配的RegExp方法,它返回一个数组(未匹配到则返回null)
/x/.exec('x124') // ["x"]
match:一个字符串中执行查找匹配的String方法,它返回一个数组或者在未匹配到时返回null
/x/.match('x124') // ["x"]
如果正则表达式带有g修饰符,则该方法与正则对象的exec方法行为不同
var s = 'abba';
var r = /a/g;
s.match(r) // ["a", "a"]
r.exec(s) // ["a"]
search:一个字符串在测试匹配的String方法,它返回匹配到的位置索引,或者在失败是返回-1
'x123'.search(/x/) //0
replace:一个字符串在执行查找匹配的String方法,并且使用替换字符串退换掉匹配的字符串
'aaa'.replace(/a/, 'b') // "baa"
'aaa'.replace(/a/g, 'b') // "bbb"
split:一个使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中的String方法
// 正则分隔,去除多余的空格
'a, b,c, d'.split(/, */)
// [ 'a', 'b', 'c', 'd' ]
利用正则表达式给数字添加千分号
//① 不是起始位置 后面连续3个数字 ,最终恰好匹配到结尾
// ^表示开头 $表示结尾
// 正则/(?!^)(?=(\d{3})+$)/g
'10000000000000000'.replace(/(?!^)(?=(\d{3})+$)/g,',')
//② 千分号前必须要有一个数字 连续3个数字到刚好匹配到结尾,
// 正则/(\d)(?=(\d{3})+$)/g
'10000000000000000'.replace(/(\d)(?=(?:\d{3})+$)/g,'$1,')
正则截取中间字符串
let str = '这是测试--sdfASDQWC--字符串'
console.log(str.match(/(?<=测试--).+(?=--字符)/)[0])
正则表达式中 的$1,$2
$1,$2表达的是小括号里面的内容
$1是第一个小括号里的内容,$2是第二个小括号里面的内容,依此类推
比如(\d{4})(\d{2})(\d{2}) 匹配"20200101"
$1是第一个括号里匹配的2020
$2是第二个括号里匹配的01
$3是第三个括号里匹配的01