2011-11-05 84 views
1

我無法獲得正好匹配單個字符的正則表達式。僅用於匹配單個字符的正則表達式

$strings=array('hgasdfgh','a','1','addsa'); 
foreach($strings as $string) 
{ 
$result=preg_match('/[a-z]/',$string); 
if($result) 
echo "match"; 
else 
echo "no";} 

此代碼與第1個第2和第4個字符串數組匹配。但我需要它與第二項(任何角色)匹配。

+0

你爲什麼不給我們一些例子? – ThiefMaster

+0

爲什麼你不通過做這樣的if語句來檢查字符串是否完全是'a'if($ string ==='a')'? –

+0

@KemalKernal因爲它也應該匹配所有其他字符。 – ComFreek

回答

2

試試這個表達

^[a-z]$ 

^表示字符串和$它的結束的開始。

+0

感謝@ComFreek的幫助。它的工作 –

+0

感謝**你,現在,我有1004的聲望,並獲得了'創建畫廊聊天'的特權;) – ComFreek

2
/[a-z]/ 

那麼這是什麼意思?匹配a-z中的單個字符。

除第3個之外的所有數組條目滿足此要求。因此全部匹配。

現在,如果你是在其兩端錨你的正則表達式:

/^[a-z]$/ 

它只會匹配字符串的開頭,後跟一個字母,然後是字符串的結尾,即在你的第二個項目陣列。

編輯:

您要求的^內外支架的區別:

^是支架外,單獨就意味着該字符串的開頭。如果你逃脫它\^它意味着匹配字符^字面。

^是支架(S)如內:

[^a-z]它有效地否定了這種字符,這意味着你應該匹配的東西是不是在蘭斯a-z一個字符。因此,這可以匹配,例如9A#等等。最後,當^是一個字符類中而不是在第一位置:

[a-z^]它失去了它的否定的特殊含義,它是一個文本字符^。所以角色類現在可以匹配範圍爲a-z或^的單個字符。

+0

你能告訴我^支架內外的區別嗎? –

+0

@PrakashNeupane檢查我更新的答案。 – FailedDev

+0

你能幫我在這種情況下:

 $strings="ram is addsa boy"; $a="ram"; 
$ result = preg_match('/^'.$ a。'$ /',$字符串); if($ result) echo「match」; else echo「no」; 如何在此處表示此變量 –