【问题标题】:regex test for repeat words for url and filepath正则表达式测试 url 和文件路径的重复单词
【发布时间】:2013-03-23 08:08:43
【问题描述】:

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

  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);
}

请帮助我解决这个问题。

【问题讨论】:

  • @outcoldman 感谢您的链接,实际上正如我所提到的,我不想验证 url...它只需要以 http:// 或 https:// 或 // 开始,它正在使用我在上面发布的 sn-p 但需要扩展正则表达式以测试重复值,例如 http:// 或 https:// 或 //
  • 请重新表述您的问题或/并添加示例。
  • 请进一步解释"filepath like \abc"。正则表达式中的 (\\\\)+ 将匹配任何以偶数个反斜杠开头的字符串。
  • @MikeM 请立即查看

标签: javascript regex


【解决方案1】:

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

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

干杯。

【讨论】:

    【解决方案2】:

    要检查多个匹配项,您可以将 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 返回多个实例时,很明显该模式被多次使用。这应该有助于识别不正确的网址。

    而且,它比拆分更干净。

    希望这会有所帮助。

    【讨论】:

    • 当用户输入 http:/ 或 dfdfhttp:// 或 //// 之类的值时,此解决方案会失败
    • 是的,因此“下面是简化版”。我并没有更多地关注模式找到多个匹配项的能力。使用它或不使用它。干杯。
    【解决方案3】:

    试试

    var regexp = /^(?!(.*\/\/){2})(https?:)?\/\//;
    var enteredvalue = "http://facebookhttp://";
    
    if (!regexp.test(enteredvalue)) {    
        console.log("not valid url or filepath");
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-22
      • 1970-01-01
      • 1970-01-01
      • 2014-06-30
      • 2016-12-11
      • 1970-01-01
      相关资源
      最近更新 更多