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}$)/"