Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js如何使用RegEx对象回复,Hapijs_Node.js_Hapijs - Fatal编程技术网

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

Node.js如何使用RegEx对象回复,Hapijs,node.js,hapijs,Node.js,Hapijs,我试图编写一个端点来返回我们在web应用程序中使用的一组正则表达式,以便从服务器端对它们进行标准化 const myRegExp: RegExp = /^\d{10}$/; return reply(myRegExp); 问题是这个回复在被调用时以{}的形式出现 如果我回复一个字符串,一个数字,一个对象,世界上的任何东西。。。正如预期的那样,它通过回复而来。使用RegExp类型的参数进行应答时,返回一个空对象{} 如何在节点/Hapi端点中发回原始RegExp正则表达式 是的,我知道我

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

  const myRegExp: RegExp = /^\d{10}$/;
  return reply(myRegExp);
问题是这个回复在被调用时以
{}
的形式出现

如果我回复一个字符串,一个数字,一个对象,世界上的任何东西。。。正如预期的那样,它通过回复而来。使用RegExp类型的参数进行应答时,返回一个空对象
{}

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


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

hapi返回空对象的原因是RegExp对象没有任何公共属性。您可以通过控制台看到这一点

> let x = new RegExp('/\d/')
> x
/\/d\//
> Object.keys(x)
[]
我认为正确的方法是,您可以返回myRegExp.source,然后在客户端代码中与
newregexp(resp)
一起使用它,这并不是那么愚蠢

或者,您可以将regexp定义作为字符串返回,如

reply('/^\d{10}$/')
然后,您可以通过
newregexp(resp)

我认为不可能直接将经过计算的regexp对象从服务器返回到浏览器。也许你可以这样做

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

现在你刚从服务器上加载了一个javascript,但我认为它没有什么用处。

谢谢@metoikos,我就是这样做的,
.source
,然后
新的RegEx
,令人沮丧的是,它没有按应有的方式工作,但很好