Javascript 用于不带http、https、ftp的URL的正则表达式

Javascript 用于不带http、https、ftp的URL的正则表达式,javascript,regex,Javascript,Regex,我正在寻找一个可以接受如下URL的正则表达式: http://www.example.com www.example.com 这是到目前为止我所拥有的,但是它与没有http://或https://或ftp://的URL不匹配: regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/; 如何使协议可选?使(ftp | http | https):\/\/部分

我正在寻找一个可以接受如下URL的正则表达式:

http://www.example.com
www.example.com
这是到目前为止我所拥有的,但是它与没有
http://
https://
ftp://
的URL不匹配:

regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
如何使协议可选?

使
(ftp | http | https):\/\/
部分可选:

((ftp|http|https):\/\/)?

尝试此操作将使用(http、ftp、https)或不使用(http、ftp、https)验证url

请看

从上述链接中引用:

value = 'www.google.com';
if(/(^|\s)((https?:\/\/)?[\w-]+(\.[\w-]+)+\.?(:\d+)?(\/\S*)?)/gi.test(value)) {
            return true;
        } else {
            return false;
        }

试试这个,这将在大写和小写两种情况下验证带有或不带(http、ftp、https)的url,还允许您对数字进行验证

/^(?:(ftp|http|https)?:\/\/)?(?:[\w-]+\.)+([a-z]|[A-Z]|[0-9]){2,6}$/gi;

example.pl
:波兰的网站还是Perl脚本?不幸的是,在OP的例子中不是。它要么被正则表达式使用,要么不被正则表达式使用。(链接导致一个regexp来解析URL)有理由强制执行一个方案或``部分。虽然我知道需要找到这样的东西(请参阅),但也可以查看非常通用的解决方案。谢谢,但现在我可以匹配例如“示例”或example@example.com". 我不想要它。那么我该如何解决这个问题呢?我的正则表达式:regexp=/((ftp | http | https):\/\/)(\w+:{0,1}\w*@)(\S+)(:[0-9]+)(\/\/([\w#!:.?+=&%@!\-\/]);我不想比赛“example@example.com或“示例”
example@example.com
实际上是一个有效的URL:第一个
示例是一个用户名,可以通过这种方式提交。尝试在
http://
stackoverflow.com
之间添加一个
example@
加载此页面。好的。我不知道。谢谢你的帮助。我不想在我的URL中接受@。你知道如何更改我的正则表达式吗?此正则表达式不接受来自德国的域的url。e、 g(www.germany.de)。您必须将正则表达式更改为
/^(?(ftp | http | https):\/\/)?(?:[\w-]+\.)+[a-z]{2,6}$/2很重要。这不是一个很好的方法。实际上,您所能做的就是检查
。有许多新TLD的名称超过6个字符。。。
/^(?:(ftp|http|https)?:\/\/)?(?:[\w-]+\.)+([a-z]|[A-Z]|[0-9]){2,6}$/gi;