我需要在输入的值
时提醒用户我尝试了以下正则表达式,其中第一种情况成功,第二种情况失败
var regexp = /^(http:(\/\/)|https:(\/\/)|(\\\\))/;
var enteredvalue="http://facebookhttp://"
if (!regexp.test(enteredvalue.value)) {
alert("not valid url or filepath);
}
请帮助我。
答案 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://"]
当匹配返回多个实例时,很明显该模式被多次使用。这应该有助于识别不正确的网址。
此外,它比分裂更清晰。
希望这有帮助。