php - 一句正则不懂
ringa_lee
ringa_lee 2017-04-10 14:36:28
[PHP讨论组]
preg_match_all("#(^|\s|\()((http(s?)://)|(www\.))(\w+[^\s\)\<]+)#i", $str, $matches)

这个正则中的|\s|()代表什么意思?有人知道吗

ringa_lee
ringa_lee

ringa_lee

全部回复(2)
迷茫

我把每一部分都解释给题主吧。

#(^|\s|\()((http(s?)://)|(www\.))(\w+[^\s\)\<]+)#i

两边的 # 是 PCRE 分隔符,最后一个 i 表示忽略大小写。

(^|\s|\()

字符串开头,或者有空格分隔,或者匹配一个左括号。这个部分是一个未命名分组。

((http(s?)://)|(www\.))

匹配 http:// 或者 https:// 或者 www. 。这个部分是一个未命名分组,其中又分成两个未命名分组。

(\w+[^\s\)\<]+)

匹配至少一个字母数字,之后再匹配至少一个不是空格、右括号、左尖括号的字符。这里又是一个未命名分组。

结束。

PHPz

推荐两个debug正则的站点:

  • debuggex 界面凑合,功能强大,支持多种语言的正则
  • regexper 比较好看,只支持javascript的正则
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号