在这里,
我正在使用以下字符串验证URL,该字符串应该是http / https或ip地址以及查询字符串和不同的括号方括号[]。
我想阻止跟随网址括号
2)http://192.0.0.0/b4d2f30f-d617-403a-bb2f-dec755d01192?[publisher[client_id]Id]
- 不允许
什么应该是正则表达式以防止[publisher[client_id]Id]
刺痛?
我正在使用以上字符串的正则表达式
var regex = /(http|https):\/\/(\w+:{0,1}\w*)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%!\-\/]))?/;
if(!regex .test(str)) {
return false;
} else {
return true;
}
应该改变什么代码呢?
请帮助我。
答案 0 :(得分:0)
试试这个:
var strings = [
'[publisher[client_id]Id]',
'[publisher_id]'
];
var pattern = /\[.*\[.*\].*\]/;
strings.forEach(function(string){
if(pattern.test(string)) {
console.log(string + " -> matched");
}
else {
console.log(string + " -> not matched");
}
});

答案 1 :(得分:0)
试试这个。第一组返回没有参数的网址(与您的发布者等)
抱歉没有仔细阅读。试试那个,如果有效则返回true
var t1 = "htts:/192.0.0.0/b4d2f30f-d617-403a-bb2f-dec755d01192?[publisher[client_id]]";
var t2 = "https://192.0.0.0/b4d2f30f-d617-403a-bb2f-dec755d01192";
var t3 = "https://192.0.0 .0/b4d2f30f-d617-403a-bb2f-dec755d01192?[publisher[client_id]]";
var t4 = "https://192.0.0 .0/b4d2f30f-d617-403a-bb2f-dec755d01192?name=[publisher[client_id]]";
var t5 = "https://192.0.0 .0/b4d2f30f-d617-403a-bb2f-dec755d01192?foo=bar&name=[publisher[client_id]]";
function check(str) {
var url = /((http[s]?:\/\/){1,1}(\w+[-.\/]{0,1}\w?)*)/g,
p = /([\?\&](\w+=){0,1}\[\w+\[\w+\]\w*\])/g;
/*check for url*/
if (!url.test(str)) {
return "invalid url";
}
/*check for [userid[userid]]*/
return p.test(str) ? "invalid" : "valid";
}
document.body.innerHTML = check(t1) + "</br>";
document.body.innerHTML += check(t2) + "</br>";
document.body.innerHTML += check(t3) + "</br>";
document.body.innerHTML += check(t4) + "</br>";
document.body.innerHTML += check(t5) + "</br>";
&#13;
问候