2013-04-02 113 views
1

重复单词的正则表达式的测试,我需要提醒用户,当输入值为URL和文件路径

  1. 没有“T以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); 
} 

请帮助我一样。

+1

http://stackoverflow.com/questions/8667070/javascript-regular-expression-to-validate-url – outcoldman

+0

@outcoldman感谢您的链接,实际上,正如我所提到的我不想验证网址......它只是需要以http://或https://或//开头,它与我在上面发布的代码片段一起工作,但需要扩展名才能测试重复值,例如http://或https://或// – shiv455

+0

请更改您的问题或/并添加示例。 – Loamhoof

回答

1

这似乎工作(虽然会有更优雅的解决方案)。希望它有所帮助。

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

干杯。

+0

感谢您的解决方案 – shiv455

+0

没有问题的队友。对你最好 –

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://"] 

当比赛返回多个实例,然后很显然,该模式被使用一次以上。这应该有助于识别不正确的网址。

此外,它比分裂更清洁。

希望这会有所帮助。

+0

当用户输入如http:// http://或dfdfhttp://或//// – shiv455

+0

这样的值时,此解决方案失败是的,因此“下面是一个简化版本”。我没有把注意力放在模式上,而是更多地找到多个匹配的能力。使用它或不使用它。干杯。 –

1

尝试

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

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

负先行处理用于防止匹配,如果两套//出现的字符串中。

+0

完美!!!谢谢@MikeM – shiv455