2011-11-05 86 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”; 如何在此处表示此变量 –