使用可选协议/方案验证 URL 字符串[重复]

问题描述 投票:0回答:4

我有这个正则表达式代码

/^(https?:\/\/+[\w\-]+\.[\w\-]+)/i

它适用于完整的 URL,但您需要在 URL 中添加

http://
才能进行验证。

我正在寻找一种方法来验证 URL,其中协议是可选的。

用户不想将

http://
添加到 URL,他们只想拥有
example.com

如果可能的话,无论它有没有

http://
,我都需要它工作。

我该怎么做?

php regex validation url url-scheme
4个回答
4
投票

不要为正则表达式烦恼。使用 parse_url 函数。


2
投票

您可以将其设为可选

/^((?:https?:\/\/+)?[\w\-]+\.[\w\-]+)/i

您不想拥有的部分周围的

(?:)
是非捕获组,后面的
?
使其成为可选。

我不确定第二个斜杠后面的

+
有什么用,它至少表示前面的一个字符。这意味着它还允许像
http://////////
这样的东西。

我希望您知道,这个正则表达式远未匹配有效的 URL。

例如,它将匹配诸如

之类的内容
http://////////------------.-

或者至少

http://N.O
          ^ after this position you can write what you want and it will match valid.

在 Regexr 上,您可以看到您的正则表达式匹配的内容。

请参阅 Purple Coder 的答案,以获得可能更好的解决方案。


0
投票

/^((https?:\/\/+)?[\w-]+.[\w-]+)/i


0
投票

我正在用这个:

// 验证字符串至少包含一个点 .

var filterWebsite =  /^([a-zA-Z0-9:_\.\-/])+\.([a-zA-Z0-9_\.\-/])+$/;
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.