URL 验证的正则表达式(在 JavaScript 中)

IT技术 javascript regex validation url
2021-02-06 02:38:33

有人有用于验证网址的正则表达式(不是用于在文本段落中找到它们)?JavaScript 片段将是首选。

6个回答

接受的答案中, bobince说得对:仅验证方案名称、://、空格和双引号通常就足够了。下面是如何在 JavaScript 中实现验证:

var url = 'http://www.google.com';
var valid = /^(ftp|http|https):\/\/[^ "]+$/.test(url);
// true

或者

var r = /^(ftp|http|https):\/\/[^ "]+$/;
r.test('http://www.goo le.com');
// false

或者

var url = 'http:www.google.com';
var r = new RegExp(/^(ftp|http|https):\/\/[^ "]+$/);
r.test(url);
// false

语法参考:

@DerekHenderson 给你,你讨厌 W3Schools ;)
2021-03-14 02:38:33
+1 为 W3Schools 仇恨获得不必要的 -1。
2021-03-14 02:38:33
var r = new RegExp(/^(ftp|http|https):\/\/[^ "]+$/); new 时参数不需要 '....' ,只需使用 /^(ftp |http|https):\/\/[^ "]+$/, 作为我的尝试
2021-03-19 02:38:33
对于 W3Schools 仇恨获得不必要的 -1 也+1。
2021-03-19 02:38:33
此代码不适用于许多 URL。检测 URL 时,最好依靠专门的库。这就是为什么
2021-04-09 02:38:33

实际的 URL 语法非常复杂,并且不容易用正则表达式表示。大多数看起来简单的正则表达式都会给出许多假阴性和假阳性。看看这些努力是否有趣,但即使最终结果也不好。

此外,现在您通常希望允许 IRI 和老式 URI,因此我们可以链接到有效地址,例如:

http://en.wikipedia.org/wiki/Þ
http://例え.テスト/

我只会进行简单的检查:它是否以已知的好方法开始:名称?它没有空格和双引号吗?如果是这样,那么地狱,它可能已经足够好了。

需要考虑的另外两件事:1) tel:、mailto:、sms: 都是有效的主机;2)移动浏览器(尤其是iOS)允许其他东西代替http/https/ftp进行应用间通信。
2021-03-21 02:38:33
行。至少现在我知道在大多数情况下可能不值得付出努力:] 谢谢。
2021-03-28 02:38:33
事实上,验证 URL 的正确方法不是使用正则表达式。查看Node.js 中URI 验证代码它比一个正则表达式复杂得多,这就是为什么使用专门的库总是比使用自己的正则表达式更好的原因。
2021-03-31 02:38:33
/(ftp|https?):\/\/[^ "]+$/
2021-04-06 02:38:33

试试这个正则表达式

/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/

它最适合我。

我认为这是 url 验证的最佳正则表达式
2021-03-17 02:38:33
此代码不适用于许多 URL。检测 URL 时,最好依靠专门的库。这就是为什么
2021-04-02 02:38:33
这不适用于以下网址:www.google.com、gogl.com、google.clo、www.google.co.in、www.goo.com.in.ssd
2021-04-05 02:38:33

我在这方面取得了一些成功:

/^((ftp|http|https):\/\/)?www\.([A-z]+)\.([A-z]{2,})/
  • 它会检查以下一项或一项:ftp://、http:// 或 https://
  • 它需要www。
  • 它检查任意数量的有效字符。
  • 最后,它检查它是否有一个域,并且该域至少有 2 个字符。

它显然并不完美,但它很好地处理了我的案例

<html>
<head>
<title>URL</title>
<script type="text/javascript">
    function validate() {
        var url = document.getElementById("url").value;
        var pattern = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
        if (pattern.test(url)) {
            alert("Url is valid");
            return true;
        } 
            alert("Url is not valid!");
            return false;

    }
</script>

</head>
<body>
URL :
<input type="text" name="url" id="url" />
<input type="submit" value="Check" onclick="validate();" />
</body>
</html>
此代码不适用于许多 URL。验证 URL 时,最好依赖专门的库。这就是为什么
2021-03-31 02:38:33
如果您想自定义模式,则使用纯 JavaScript 是更好的验证选择,您可以在模式中轻松实现
2021-04-01 02:38:33