PHP正则匹配邮件地址、URL

本文介绍如何使用PHP正则表达式匹配电子邮件地址及URL,并提供了代码示例。详细解析了邮件地址和网址中各部分的匹配规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

匹配邮件 

#^[A-Za-z0-9]+[\w\.-]*@[A-Za-z0-9]+[A-Za-z0-9\.-]*[A-Za-z0-9]$#

注意

1. \w 表示的是 [A-Za-z0-9_] 包括下划线  

2.  邮件@后的域名不能含有下划线 _ 但是可以有-

<?php
$email = 'sailrancho@qq_mail.com';

function isEmail($email) {
     $preg = '#^[A-Za-z0-9]+[A-Za-z0-9\.-_]*@[A-Za-z0-9]+[A-Za-z0-9\.-]*[A-Za-z0-9]$#';
    return preg_match($preg, $email);
}

var_dump(isEmail($email));

 匹配url

<?php
$preg = '#(http://|https://)[\w]+\.[0-9a-zA-Z]+[\w\.]+#';
$content = 'asdfsdfsdfsdfasdhttp://www.baidu.com';
print preg_match($preg,$content,$match_arr);
print_r($match_arr);

 匹配url中的后缀名

<?php
$url = "http://www.baidu.com/index.php?a=sadfasdf";
$preg = '#\.([a-zA-z0-9]+)\?#';
preg_match($preg, $url, $match_arr);
print_r($match_arr);

 

 

转载于:https://www.cnblogs.com/sailrancho/p/3415535.html

### PHP 中使用正则表达式匹配 URL 的方法 在PHP中,正则表达式提供了强大的功能来进行字符串操作模式匹配。对于URL的提取,可以通过`preg_match_all()`函数配合精心设计的正则表达式实现。 下面给出一段具体的代码示例来说明如何从给定文本中找到所有的HTTP/HTTPS链接: ```php <?php // 定义待分析的字符串变量 $text = '访问我的博客 http://example.com 或者 https://www.example.org 获取更多信息'; // 编写用于捕获URL正则表达式模式 $pattern = '/https?:\/\/(?:[a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,}(?:\/[^<>\s]*)?/'; // 执行匹配过程并存储结果到数组内 preg_match_all($pattern, $text, $urls); // 输出所有发现的有效网址 print_r(array_unique($urls[0])); ?> ``` 上述脚本会输出如下内容: ``` Array ( [0] => http://example.com [1] => https://www.example.org ) ``` 此段程序通过定义了一个能够识别标准Web地址格式(即以http或https开头)的正则表达式,并将其应用于目标字符串上;最终返回符合条件的所有子串列表。值得注意的是,在实际应用过程中可能还需要考虑更多特殊情况下的URL形式调整相应的规则[^1]。 为了提高准确性以及适应更广泛的场景需求,这里提供一个更加全面复杂的版本作为参考: ```php <?php function extractUrls($str){ // 更加严格的URL检测规则 $regexUrl = "/(?i)\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'\".,<>?«»“”‘’]))/"; preg_match_all($regexUrl,$str,$match); return array_map(function ($item){return htmlspecialchars($item);} ,array_values(array_unique($match[0]))); } echo "<pre>"; var_dump(extractUrls('测试网页:http://test.cn https://secure.test.net')); echo "</pre>"; ?> ``` 这段改进后的代码不仅支持基本协议前缀(http(s)://),同时也兼容不带协议声明但带有www前缀的情况;另外增加了对特殊字符转义的支持,使得输出更为安全可靠[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值