发布于:2021-01-15 13:33:37
0
464
0
我一直喜欢探索正则表达式,因为它们是那些学校里从未教过的技能之一——您需要随时掌握它们,在此过程中搞混并修正它们。Regex的功能非常强大,它们具有的一个功能被称为反向引用,它实际上允许您在同一个正则表达式中使用匹配。
解释反向引用的最简单方法是有一个简单的目标:使用regex来模拟解构。请看下面的代码片段:
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来反映对象链(([A-z.]+))。你可以使用{#}语法使用任意数量的后向引用。要知道反向引用是对性能的征税:一些实用程序,如VS Code不支持它们;Atom editor确实支持反向引用。
正则表达式总是一种冒险,总是有更多的东西需要学习。正则表达式中我最喜欢的部分是单个字符如何极大地改变结果——在少量代码中如此强大!
作者介绍