我有以下正则表达式来检查URL是否有效:
preg_match('/^(http(s?):\/\/)?(www\.)?+[a-zA-Z0-9\.\-\_]+(\.[a-zA-Z]{2,3})+(\/[a-zA-Z0-9\_\-\s\.\/\?\%\#\&\=]*)?$/i', $url);
Run Code Online (Sandbox Code Playgroud)
我想修改这部分[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\.\/\?\%\#\&\=]*)?$
Run Code Online (Sandbox Code Playgroud)
在检查"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)
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4926 次 |
| 最近记录: |