我想匹配contact-us
url
页面
组合可能是..
contact.* i,e(extension could be .html or .php or .aspx)
contact-us.* i,e(extension could be .html or .php or .aspx)
contact.* i,e(extension could be .html or .php or .aspx)
contactUs.* i,e(extension could be .html or .php or .aspx)
没有扩展名
contact i,e(no extension)
contact-us i,e(no extension)
contact i,e(no extension)
contactUs i,e(no extension)
现在我正在使用匹配所有内容的代码
$page = "http://www.example.com/contact-usmsdnds";
if(preg_match('/contact|contact-us|contact-us(.php|html)|contact(.php|html)/siU',$page)){
echo "Matched";
}else{
echo "No Match";
}
这是一个演示:http://phpio.net/s/1i2p
我准备接受完全不同代码的解决方案
请提前帮助我!!
答案 0 :(得分:0)
您可以使用
'~/contact(?-i:-us|Us)?(?:\.(?:aspx|php|html))?/?$~i'
请参阅regex demo
匹配:
/contact
- 子字符串/contact
(?:-us|Us)?
- 可选子字符串-us
或Us
(?:\.(?:aspx|php|html))?
- .
+任意替代字符串的可选序列()/?
- 可选的/
$
- 字符串结束。请注意,(?-i:...)
是一个修饰符组,其中备选方案以不区分大小写的方式匹配(末尾的常规/i
修饰符不会影响此组)。