Php 用于匹配url模式的正则表达式不起作用

Php 用于匹配url模式的正则表达式不起作用,php,regex,Php,Regex,我很难创建一个正则表达式来匹配基于特定模式(如http://subdomain.example.com/reply/aoo/spo/4429163785 这是我到目前为止写的正则表达式 "/(^https?)(\:\/\/)([a-z]+)(\.craigslist\.org/reply)\/([a-z]{3}\/spo)\/([0-9]{10}$)/" 请帮助我改进我的正则表达式。将分隔符更改为其他内容,这样您就不必时不时地转义它。另外,不要捕获字符串中不允许变化的部分(例如,.craigs

我很难创建一个正则表达式来匹配基于特定模式(如
http://subdomain.example.com/reply/aoo/spo/4429163785

这是我到目前为止写的正则表达式

"/(^https?)(\:\/\/)([a-z]+)(\.craigslist\.org/reply)\/([a-z]{3}\/spo)\/([0-9]{10}$)/"

请帮助我改进我的正则表达式。

将分隔符更改为其他内容,这样您就不必时不时地转义它。另外,不要捕获字符串中不允许变化的部分(例如,
.craigslist.org/reply/
):

说明:
~
开头分隔符
^
匹配字符串的开头
(https?
匹配
http
https
–捕获它
://
匹配冒号,后跟两个正斜杠
([a-z]+)
匹配一个或多个小写字符–捕获它
\\.
匹配句点
craigslist
与给定字符完全匹配
\\.
匹配句点
org/reply/
与给定字符完全匹配
([a-z]{3})
匹配三个小写字符–捕获它
/spo/
与给定字符完全匹配
([0-9]{10})
匹配十个数字字符–捕获它
$
匹配字符串的结尾
~
结束分隔符

"/(^https?)(\:\/\/)([a-z]+)(\.craigslist\.org\/reply)\/([a-z]{3}\/spo)\/([0-9]{10}$)/"

您在回复之前忘记在.org部分后面转义
/

启用错误报告。还有一个未替换的分隔符。不客气。您能给我一个您想与正则表达式匹配的URL列表吗?我更喜欢使用
[.]
来匹配文本
,因为它仍然使正则表达式更具可读性:)
"/(^https?)(\:\/\/)([a-z]+)(\.craigslist\.org\/reply)\/([a-z]{3}\/spo)\/([0-9]{10}$)/"