我不擅长正则表达式,如果有人能解决我的问题,我将非常感激……我对此有一些困惑:
echo (preg_match('/\/(price-100)/i','/index.php/search/price-100/')) ? 'Same' :'Not Same';结果将是“相同”,但当我更改为价格-10或价格-1时
echo (preg_match('/\/(price-10)/i','/index.php/search/price-100/')) ? 'Same' :'Not Same';它的结果也是一样的…我想有错过的regex..anyone可以帮助我吗?非常感谢你之前!
致以最好的问候,哈里森
发布于 2012-05-17 12:52:00
对单词边界使用\b。
echo (preg_match('/\/(price-10)\b/i','/index.php/search/price-100/')) ? 'Same' :'Not Same';发布于 2012-05-17 12:53:01
"price-100“以"price-10”开头,因此正则表达式匹配。如果您只想在后面没有更多数字的情况下匹配price-10,则需要更改表达式。
这里有一个选择:
'/\/(price-10)(?:$|\/)/'它匹配".../price -10“或".../price-10/",但如果在-10后面出现斜杠以外的任何东西,都会失败。如果限制太多,你可以这样做:
'/\/(price-10)(?!\d)/'只要在-10之后没有其他数字,它就会匹配。
发布于 2012-05-17 12:58:21
用(price-10?/)替换(price-10),然后重试
https://stackoverflow.com/questions/10629962
复制相似问题