可以将正则表达式用()分组
():可以记录你匹配到的内容
\1:表示反向引用,引用第一个子表达式的内容
\2:表示第二个子表达式的内容了
\1\2\3等用在正则表达式中
$0:整个str
$1:匹配到的第一个子表达式内容
$2:匹配到的第二个子表达式的内容
$0$1$2用在replace的第二个参数中
举个🌰
// ()可以记住你已经匹配到的东西,\1表示重复第一个分组里的内容,也就是aa形式的
var reg = /(\w)\1/g; // ["aa", "bb", "cc", "dd", "dd"]
// 表示相同的匹配2次,也就是一共3次
var reg = /(\w)\1\1/g; // ["ddd"]
// 相同字母出现次数大于等于2次的
var reg = /(\w)\1+/g; // ["aa", "bb", "cc", "ddddd"]
// aabb样式的
var reg = /(\w)\1(\w)\2/g; // ["aabb", "ccdd"]
var str = "aabbccdddddef";
console.log(str.match(reg));
"123-mm".replace(/(\d+)-([A-Za-z]+)/g,"$2") // "mm"
"123-mm".replace(/(\d+)-([A-Za-z]+)/g,"$1") // "123"
$1-$9分组
这里的(\d+)表示第一个分组,对应$1
([a-zA-Z]+)表示第二个分组,对应$2
3. 反向引用
正则中的()表示一个分组,\1表示引用第一个分组一次,也就是和第一个分组内容相同才匹配
网友评论