正则表达式匹配字符串

时间:2016-10-14 10:50:42

标签: javascript regex

我正在努力解决这个问题。基本上,我试图验证用户输入,一个URL,以确保协议是由用户键入或插入,如果它不以http(s)/ ftp://开头。

不要介意插入部分,也不要验证URL本身。我有一个单独的程序来做到这一点。

我想仅在字符串的开头匹配以下所有内容:

但与此同时,我不希望它与以下内容匹配:

  • 宿主
  • httgoo
  • HTTP:/ \ ABC
  • 的ftp:例如

我正在玩下面的([https://]|[ftp://])以及它几乎按照我想要的方式匹配的东西。

我的问题是限制正则表达式只匹配字符串的开头。

更新

首先感谢您在发布我的问题之前将文章链接到我试图找到的内容。

我试图避免编写forEachif/elseswitch匹配程序。

var patterns = ['https://', 'https:/', 'http://', 'https:', 'http:/', 'ftp://', 'https', 'http:', 'ftp:/', 'http', 'ftp:', 'htt', 'ftp', 'ht', 'ft', 'h', 'f'];
forEach(patterns, function (pattern) {
    // do your atching logic here
});

正则表达式解决方案建议对我不起作用。

^f(t(p(:(\/(\/)?)?)?)?)

f无关。也许这只是http://regexr.com/的缺陷(我试图测试我的正则表达式)。

(h(t(t(p(s(:(\/(\/?)?)?)?)?)?)?)?)|(h(t(t(p(:(\/(\/?)?)?)?)?)?)?)|(f(t(p(:(\/(\/)?)?)?)?)?)

上面的模式与我之后的情况相符,但以下情况除外:

并且错误地匹配以下内容:

  • 宿主
  • httgoo
  • HTTP:/ \ ABC
  • 的ftp:例如

当我在error中说出来时,我的意思是错误地与我实际想要匹配的内容相符。

无论如何,上面链接的文章确实提供了一些好的方向。所以,再次感谢链接。

0 个答案:

没有答案