关于JavaScript中的字符比较

时间:2017-04-13 03:33:27

标签: javascript node.js

根据路由我在地址空白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')
            }   
       }
    }
});

1 个答案:

答案 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。