gpt4 book ai didi

regex - 检查 URL 时更改正则表达式以允许 IP 地址?

转载 作者:行者123 更新时间:2023-12-04 06:45:48 25 4
gpt4 key购买 nike

我有以下正则表达式来检查 URL 是否有效:

preg_match('/^(http(s?):\/\/)?(www\.)?+[a-zA-Z0-9\.\-\_]+(\.[a-zA-Z]{2,3})+(\/[a-zA-Z0-9\_\-\s\.\/\?\%\#\&\=]*)?$/i', $url);

我喜欢将这部分 [a-zA-Z0-9\.\-\_]+(\.[a-zA-Z]{2,3})(至少我希望它是粗体部分)修改为 IP 地址或突出显示的部分。

目前,正则表达式对我来说非常好,因为它可以正确地找到错误的 URL - 尽管我相信一旦 ICANN 的新域政策生效,这将开始无法正常工作(即 Google 可能想要 url http://search.google -而不是 http://google.com 用于搜索)

无论如何,我想添加允许 IP 地址也是有效 URL 的功能,但我不确定如何将其纳入正则表达式

如果有人能伸出援手,那就太好了!

最佳答案

这个正则表达式似乎有效:

^(http(s?):\/\/)?(((www\.)?+[a-zA-Z0-9\.\-\_]+(\.[a-zA-Z]{2,3})+)|(\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b))(\/[a-zA-Z0-9\_\-\s\.\/\?\%\#\&\=]*)?$

在检查“http”之后的部分,它只是执行 OR 操作,以匹配域名或 IP。以下是相关摘录:
((www\.)?+[a-zA-Z0-9\.\-\_]+(\.[a-zA-Z]{2,3})+)|(\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b)

IP 表达式有点长,但它确保它是一个有效的 IP(例如,不是 999.999.999.999)。您可以轻松地将其替换为另一个 IP 检查。

在这里,它已合并到您之前的代码中:
preg_match('/^(http(s?):\/\/)?(((www\.)?+[a-zA-Z0-9\.\-\_]+(\.[a-zA-Z]{2,3})+)|(\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b))(\/[a-zA-Z0-9\_\-\s\.\/\?\%\#\&\=]*)?$/i', $url);

关于regex - 检查 URL 时更改正则表达式以允许 IP 地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8249420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com