我有这个正则表达式代码
/^(https?:\/\/+[\w\-]+\.[\w\-]+)/i
它适用于完整的 URL,但您需要在 URL 中添加
http://
才能进行验证。
我正在寻找一种方法来验证 URL,其中协议是可选的。
用户不想将
http://
添加到 URL,他们只想拥有 example.com
。
如果可能的话,无论它有没有
http://
,我都需要它工作。
我该怎么做?
不要为正则表达式烦恼。使用 parse_url 函数。
您可以将其设为可选
/^((?: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 的答案,以获得可能更好的解决方案。
/^((https?:\/\/+)?[\w-]+.[\w-]+)/i
我正在用这个:
// 验证字符串至少包含一个点 .
var filterWebsite = /^([a-zA-Z0-9:_\.\-/])+\.([a-zA-Z0-9_\.\-/])+$/;