2016-11-24 75 views
2

下面的preg_match與通配符中的'empty'(0個字符)匹配。我想禁用:preg_match通配符,需要至少一個字符

preg_match('/site.com\/subsection\/.*?/', $page_url); 

所以上面的東西應該匹配site.com/subsection/subpage,但應該不匹配的根目錄site.com/subsection/

我怎樣才能調整正則表達式?提前致謝!

+2

嘗試' '/site\.com\/subsection \ /.+/'' –

回答

4

模式末尾的.*?與空字符串匹配。你需要使它符合使用.+一個或多個字符:現在

'/site\.com\/subsection\/.+/' 
         ^

,它需要至少1焦炭site.com/subsection/後。

注意點必須轉義以匹配文字點。

此外,它可能是一個好主意,用比其他/正則表達式的分隔符(如OcuS建議如下comments)如果你在模式本身許多斜線。我通常使用波浪線:

'~site\.com/subsection/.+~' 
+0

謝謝,這似乎工作!允許時接受你的答案。 – dirk

+1

通過選擇不同的分隔符而不是'/'來保存自己的一些字符。像'@site \ .com/subsection /[email protected]'。它還增加了更多的可讀性恕我直言。 – OcuS

相關問題