Javascript 检测字符串是否看起来像查询字符串
对于如何简单地检测一个字符串是否“看起来”像一个查询字符串,有谁能给出一些建议吗?例如,如果我有这样一个查询字符串:Javascript 检测字符串是否看起来像查询字符串,javascript,Javascript,对于如何简单地检测一个字符串是否“看起来”像一个查询字符串,有谁能给出一些建议吗?例如,如果我有这样一个查询字符串: field1=value1&field2=&field3=value4 它将返回true 以下是我认为应该为我的需要做的事情,但我也愿意接受任何其他建议,下面的内容非常粗略。也许在解析无效的查询字符串时,甚至有一个函数返回false function looks_like_querystring(source) { return /=.*?&/g
field1=value1&field2=&field3=value4
它将返回true
以下是我认为应该为我的需要做的事情,但我也愿意接受任何其他建议,下面的内容非常粗略。也许在解析无效的查询字符串时,甚至有一个函数返回false
function looks_like_querystring(source) {
return /=.*?&/g.test(source);
}
或
String.prototype.isInvalidCharacter=function(){
validCharacters=“1234567890QWERTYUIOPASDFHJKLZXCVBNM&=”
for(validCharacters中的变量i){
if(validCharacters[i]==this.valueOf())返回false;
}
返回true;
}
String.prototype.isQueryString=function(){
for(var i=0;i谢谢大家..昨天有点忙,但最终还是使用了一个正则表达式,这是我在发布以下问题后在这里发现的:
以下是我最终使用的,非常适合我的目的:
function looks_like_querystring(source) {
return /^\???[^<[{]([^=&?]+(=[^=&?]*)?(&[^=&?]+(=[^=&?]*)?)*)?$/.test(source);
}
函数看起来像查询字符串(源代码){
返回/^\???[^以防万一,当我使用有效的field1=value1
查询字符串测试它时,您的两个方法都返回false
。您是否有更多的规范要求查询字符串必须始终具有“&”?也许阅读可以帮助了解有效查询字符串的规则。这是一个好问题,但在我的情况下,总是会有很多参数。将永远不会包含“?”,可能会也可能不会以“&”开头。我知道确实没有可靠的方法来实现这一点,我只是想得到一个像样的检查。也许可以补充一点,它不能以“将信息放入问题体,如果可能的话,更多的测试用例来澄清问题”。
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;
}
function looks_like_querystring(source) {
return /^\???[^<[{]([^=&?]+(=[^=&?]*)?(&[^=&?]+(=[^=&?]*)?)*)?$/.test(source);
}