使用Javascript中的正则表达式自定义有效URL验证

时间:2016-11-09 08:37:16

标签: javascript regex validation

在这里,

我正在使用以下字符串验证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;
        }

应该改变什么代码呢?

请帮助我。

2 个答案:

答案 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;
&#13;
&#13;

问候