根据路由我在地址空白localhost:3000 / ff00ff
中键入这里'ff00ff',它应该像十六进制代码, 如果是的话,回复Hello world,'ff00ff'! 如果不是,则回复404未找到。
但问题是,它不起作用。提示:“错误:未捕获错误:回复接口调用两次”
这是我写的代码
server.route({
method: 'GET',
path: '/{name}',
handler: function (request, reply) {
var judge = new String(request.params.name);
console.log(judge);
for(var i=0; i<6; i++){
if (judge[i]==='0'||'1'||'2'||'3'||'4'||'5'||'6'||'7'||'8'||'9'||'a'||'b'||'c'||'d'||'e'||'f'||'A'||'B'||'C'||'D'||'E'||'F'){
reply('Hello, ' + judge + '!')
}
else{
reply('404 Page Not Found')
}
}
}
});
答案 0 :(得分:2)
您的比较是尝试将所有字符组合在一起,哪些JavaScript只会评估为'0'
,从而在false
上为所有非零字符产生judge[i]==='0'
。
对于比较,您必须单独进行每次比较。即:
if (judge[i] === '0' || judge[i] === '1' || ...) { // ...
然而,有一种更简单的方法可以实现您的目标。
输入RegExp和String.match
功能。
if (judge.match(/^[A-F0-9]{6}$/i)) { // ...
这会检查judge
是一个6个字符的长字符串,只包含A-F(或a-f)和0-9。