使用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)的相关知识