检测String是否看起来像查询字符串

时间:2014-09-24 01:31:21

标签: javascript

是否有人建议如何简单地检测字符串“看起来像”是否为查询字符串?例如,如果我有一个这样的查询字符串:

field1=value1&field2=&field3=value4

它将返回true

这是我正在考虑应该为我所需要的技巧,但我也对任何其他建议持开放态度以及下面的内容非常粗略。也许在解析无效的查询字符串时,甚至还有一个返回false的函数?

function looks_like_querystring(source) {
    return /=.*?&/g.test(source);
}

function looks_like_querystring(source) {
    return source.indexOf('&') != -1 && source.indexOf('=') != -1;
}

2 个答案:

答案 0 :(得分:0)

String.prototype.isInvalidCharacter=function(){
    validCharacters="1234567890qwertyuiopasdfghjklzxcvbnm&="
    for(var i in validCharacters){
        if (validCharacters[i]===this.valueOf()) return false;
    }
    return true;
}

String.prototype.isQueryString=function(){
    for(var i=0;i<this.length;i++){
        if (this[i].isInvalidCharacter()){return false;}
    }
    var prevChar="&";
    var counter=0;
    for(var i=0;i<this.length;i++){
        if (this[i]==="="){
             if(prevChar==="=") return false;
             prevChar="=";counter++;
        }
        if (this[i]==="&"){
            if(prevChar==="&") return false;
            prevChar="&";counter++;
        }
    }
    if (counter===0) return false;
   return true;
}

答案 1 :(得分:0)

谢谢大家..昨天有点束缚但最后只是基于我发现此问题后我在此处找到的正则表达式:Validate URL query string with regex

以下我最终使用的内容完全符合我的目的:

function looks_like_querystring(source) {
    return /^\???[^<[{]([^=&?]+(=[^=&?]*)?(&[^=&?]+(=[^=&?]*)?)*)?$/.test(source);
}