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