2017-04-21 42 views
2

我遇到了正則表達式的麻煩,我的目標是讓字符串的末尾放在if語句中。因此,例如我有一個字符串2017_annualoff我正在使用我的preg_match在if else語句中取樣annualoff就像這樣。適當的preg_match獲取字符串的結尾

else if (preg_match("/^(.*?)\annualoff/", $request->filters['types.created_at'])) { 
      return "Hello annual off"; 
      // $trimmedFilter = str_replace('_annualoff', '', $request->filters['types.created_at']); 
      // $splitYear = $trimmedFilter; 
      // $filtered_table = $filtered_table->where('methods.created_at', 'LIKE', '%' . '2016-11-16' . '%'); 
      } 

但是,在我的其他代碼塊通過時,它不會經過該塊,這裏是if語句的其餘部分。

if(preg_match("/^(.*?)\monthlyoff/", $request->filters['types.created_at'])) { 

} else if (preg_match("/^(.*?)\quarteroff/", $request->filters['types.created_at'])) { 

} else if (preg_match("/^(.*?)\annualoff/", $request->filters['types.created_at'])) { 
      return "Hello annual off"; 
} 

我試着讓annualoff preg匹配一些簡單的東西,例如「99」,然後是樣本字符串2017_99,並且它通過了。所以我認爲我的正則表達式肯定有問題。 你能解決這個問題嗎?或者爲什麼它不會通過?這是什麼適當的正則表達式?同時,當我使用不同的字符串時,它會通過。

+0

(a)是否應該是字符串的_end_?如果是這樣,你應該在表達式的末尾加上'$'。 (b)爲什麼在'a'之前有一個反斜槓'\'? – Manngo

+0

你在用反斜槓做什麼? '\ a','\ q','\ m'? – chris85

+0

是的,它總是應該是字符串的結尾。我很抱歉,我在互聯網上找到了正則表達式,並聲稱「讀取字符串的末尾」以對其進行抽樣。我認爲反斜槓什麼都不做,只是將我正在取樣的單詞分開,至少我認爲這就是它所做的。 – user827391012

回答

1

您可以使用$到字符串的結尾匹配字符

<?php 

$created_at = trim($request->filters['types.created_at']); 

if (preg_match("/monthlyoff$/", $created_at)) { } 

else if (preg_match("/quarteroff$/", $created_at)) { } 

else if (preg_match("/annualoff$/", $created_at)) { } 
1

正則表達式:^[\d]{4}\_monthlyoff$這將匹配4digits然後_那麼你的字符串

例子:2017_monthlyoff

<?php 
ini_set('display_errors', 1); 

if(preg_match("/^[\d]{4}\_monthlyoff$/", $request->filters['types.created_at'])) { 

} else if (preg_match("/^[\d]{4}\_quarteroff$/", $request->filters['types.created_at'])) { 

} else if (preg_match("/^[\d]{4}\_annualoff$/", $request->filters['types.created_at'])) { 
      return "Hello annual off"; 
} 
+0

@ chris85你在說什麼角色類的先生? –

+0

每個正則表達式中的[[\ d]。 '\ d'將工作相同。下劃線也不需要被轉義。 – chris85

+0

是的,正確的,我通常把這些,以便OP可以添加任何字符,如果他想添加更多的驗證,我的表達也將正常工作......但非常感謝很多人.. :) –