Node.js如何使用RegEx对象Hapijs进行回复

时间:2018-12-11 00:27:34

标签: node.js hapijs

我正在尝试编写一个端点以返回我们在Web应用程序中使用的一组正则表达式,以从服务器端对其进行标准化。

  const myRegExp: RegExp = /^\d{10}$/;
  return reply(myRegExp);

问题在于,此回复在被调用时以{}的形式出现

如果我用字符串,数字,对象,世界上的任何东西进行回复...它会按预期方式通过回复。使用RegExp类型的参数进行回复,将返回一个空对象{}

如何在Node / Hapi端点中发回原始RegExp正则表达式?

是的,我知道我可以使用myRegExp.source进行回复,然后使用new RegExp(resp)重新创建,但这看起来很愚蠢,除非我被迫这么做。

1 个答案:

答案 0 :(得分:1)

hapi返回带有空对象的原因是regexp对象没有任何公共属性。您可以通过控制台查看。

> let x = new RegExp('/\d/')
> x
/\/d\//
> Object.keys(x)
[]

我认为正确的方法是您可以返回 myRegExp.source ,然后将其与new RegExp(resp)一起用于客户端代码,这并不傻。

或者您也可以像

这样的字符串返回正则表达式定义。
reply('/^\d{10}$/')

然后您可以通过new RegExp(resp)

在客户代码中使用它

我认为不可能将评估后的正则表达式对象从服务器直接返回到浏览器。也许你可以做这样的事情;

reply(`const myRegExp = new RegExp(/^\d{10}$/);`).type("application/javascript");

现在,您刚刚从服务器加载了一个javascript,但我认为它没有用。