我正在努力解决这个问题。基本上,我试图验证用户输入,一个URL,以确保协议是由用户键入或插入,如果它不以http(s)/ ftp://开头。
不要介意插入部分,也不要验证URL本身。我有一个单独的程序来做到这一点。
我想仅在字符串的开头匹配以下所有内容:
但与此同时,我不希望它与以下内容匹配:
我正在玩下面的([https://]|[ftp://])
以及它几乎按照我想要的方式匹配的东西。
我的问题是限制正则表达式只匹配字符串的开头。
首先感谢您在发布我的问题之前将文章链接到我试图找到的内容。
我试图避免编写forEach
或if/else
或switch
匹配程序。
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(:(\/(\/)?)?)?)?)?)
上面的模式与我之后的情况相符,但以下情况除外:
并且错误地匹配以下内容:
当我在error
中说出来时,我的意思是错误地与我实际想要匹配的内容相符。
无论如何,上面链接的文章确实提供了一些好的方向。所以,再次感谢链接。