1

我需要在输入值时提醒用户

  1. 不以 http:// 或 https:// 或 // 开头
  2. 如果在输入的值中重复了上述 3 个单词(http:// 或 https:// 或 //)中的任何一个。

我尝试了以下正则表达式,其中第一种情况成功,第二种情况失败

var regexp = /^(http:(\/\/)|https:(\/\/)|(\\\\))/;
var enteredvalue="http://facebookhttp://"

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

请帮助我解决同样的问题。

4

3 回答 3

1

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

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

干杯。

于 2013-04-02T15:19:03.603 回答
1

尝试

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

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

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

于 2013-04-02T17:20:31.387 回答
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://"]

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

此外,它比拆分更清洁。

希望这可以帮助。

于 2013-04-02T15:56:11.013 回答