使用JavaScript进行反向查询

正则表达式,它是对字符串执行模式匹配的强大工具。正则表达式非常强大,它们的一种功能称为反向引用,它实际上使您可以在同一正则表达式中使用匹配项。

解释反向引用的最简单方法是一个简单的目标:使用正则表达式来模拟解构。采取以下代码段: 

const body = document.blah.body;

借助JavaScript 解构等令人敬畏的新语言功能,编写上面代码的更好方法是: 

const { body } = document.blah;

注意:作为一般的编程规则,使用正则表达式实现或模拟语言功能是一个非常糟糕的主意。但是,为了解释反向引用,它是完美的。

反向引用语法为\{number of match} : 

const code = "const body = document.blah.body;";
const destrcutured = code.replace(/const (\w+) = ([A-z\.]+)\.\1;/, "const { $1 } = $2;");
// const { body } = document.blah";

上例中,我们使用\1引用同一表达式中的第一个匹配项。然后,我们使用$1反映匹配的(\w+)$2反映对象链( ([Az.]+) )。你可以使用\{#}语法使用任意数量的反向引用。请注意,反向引用会影响性能:某些工具(如VS Code)将不支持它们;它们会影响性能。Atom编辑器确实支持反向引用。

如果需要更深入的学习反向引用,需要学习 正则表达式-捕获组(capture group)的相关知识