解决 ES9 中非以‘/’开头的正则表达式问题

阅读时长 2 分钟读完

在 ES9 中,正则表达式成了一个重点。不过,有一些开发者注意到,在某些情况下,非以‘/’开头的正则表达式无法正常解析。比如下面这个例子:

这应该是一个匹配电话号码的正则表达式。然而,它会报错,提示“Invalid regular expression: missing /”。

这个问题的原因是,在 ES9 中,非以‘/’开头的正则表达式有了新的含义,被称为“pattern flags”。而这个新的含义与我们通常使用正则表达式的方式不同,导致了上述错误。那么,我们该如何解决这个问题呢?

解决方案

解决这个问题很简单,只需要将正则表达式转换成字符串的形式,然后将其作为第一个参数传递给 RegExp 构造函数即可。也就是说,上面的例子可以这样写:

需要注意的是,在转换后的字符串中,原来的反斜线需要再次转义,这样才能正确匹配。

还可以使用模板字符串来简化代码:

示例代码

总结

解决 ES9 中非以‘/’开头的正则表达式问题,可以将正则表达式转换成字符串形式,再传递给 RegExp 构造函数,或者使用模板字符串简化代码。这样可以避免“pattern flags”的影响,让代码更清晰易懂。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/648ae42d48841e989492f71c

纠错
反馈