在正则表达式中,反引用是一种引用先前匹配到的子串的技术。当你在正则表达式中使用括号 () 创建了一个捕获组,正则引擎会记住每个捕获组所匹配的内容。之后,你可以在正则表达式自身或其他字符串中通过$1、$2、$3
等等形式引用这些捕获组的内容,$n中的n是一个从1
开始计数的整数,代表第n
个捕获组。
let str = "Hello (World)!";
let newStr = str.replace(/(Hello) \(([^\)]+)\)/, "$2, $1!");
//replace() 方法接受两个参数
//第一个参数是一个正则表达式,用于匹配需要替换的子串
//第二个参数是一个字符串或函数,用于替换匹配到的子串
console.log(newStr); // 输出 "World, Hello!"
在这个例子中:
(Hello) 创建了第一个捕获组,匹配 “Hello”。
([^)]+) 创建了第二个捕获组,匹配 “(World)” 中的 “World”。
在替换字符串 “$2, $1!” 中:
$2 是一个反引用,它引用了第二个捕获组的内容,即 “World”。
$1 是另一个反引用,引用了第一个捕获组的内容,即 “Hello”。
所以最终替换的结果是将原本的 “Hello (World)!” 替换为 “World, Hello!”。
总结来说,反引用允许你复用正则表达式中捕获组匹配的内容,而在JavaScript replace() 方法的替换字符串中,反引用尤其有用。