正则表达式测试url和filepath的重复单词

时间:2013-04-02 06:02:04

标签: javascript regex

我需要在输入的值

时提醒用户
  1. 不会以http://或https://或//
  2. 开头
  3. 如果在输入的内容中重复了上述3个单词(http://或https://或//)中的任何一个 值。
  4. 我尝试了以下正则表达式,其中第一种情况成功,第二种情况失败

    var regexp = /^(http:(\/\/)|https:(\/\/)|(\\\\))/;
    var enteredvalue="http://facebookhttp://"
    
    if (!regexp.test(enteredvalue.value)) {    
        alert("not valid url or filepath);
    }
    

    请帮助我。

3 个答案:

答案 0 :(得分:1)

这似乎有效(尽管会有更优雅的解决方案)。希望它有所帮助。

var regex = /http[s]{0,1}:\/\/|\/\//;
var x = enteredvalue.split(regex);
if(!(x[0]=='' && x.length==2))
   alert("not valid url or filepath");

干杯。

答案 1 :(得分:1)

尝试

var regexp = /^(?!(.*\/\/){2})(https?:)?\/\//;
var enteredvalue = "http://facebookhttp://";

if (!regexp.test(enteredvalue)) {    
    console.log("not valid url or filepath");
}

如果字符串中出现两组//,则使用负前瞻来防止匹配。

答案 2 :(得分:0)

要检查多个匹配项,可以将String.match与RegexP和“全局搜索”选项结合使用。以下是您的代码的简化版本:

var enteredvalue="http://facebookhttp://"
var test_pattern = new RegExp("(https://|http://|//)", "g"); //RegExP(pattern, [option])

enteredvalue.match(test_pattern); // should return ["http://", "http://"]

当匹配返回多个实例时,很明显该模式被多次使用。这应该有助于识别不正确的网址。

此外,它比分裂更清晰。

希望这有帮助。