用于匹配单个字符的正则表达式

时间:2011-11-05 14:03:20

标签: php arrays preg-match

我无法获得与正好单个字符匹配的正则表达式。

$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个数组字符串匹配。但我需要它与第二项(任何角色)匹配。

2 个答案:

答案 0 :(得分:2)

试试这个表达

^[a-z]$

^表示字符串的开头,$表示字符串的结尾。

答案 1 :(得分:2)

/[a-z]/

那是什么意思?匹配a-z中的单个字符。

除第3个以外的所有数组条目都满足此要求。因此全部匹配。

现在,如果你要将你的正则表达式包含在锚点中:

/^[a-z]$/

它只匹配字符串的开头,后跟一个字母,后跟字符串的结尾,即数组中的第二个条目。

编辑:

您询问了括号内外的区别:

^在括号之外时,单独表示字符串的开头。如果你将其\^转义,则意味着字面上匹配字符^。

^位于括号内时,例如:

[^a-z]它有效地否定了这个角色类,这意味着你应该匹配那些不是rance a-z中的角色的东西。因此,这可以匹配例如9A#等。最后,当^位于字符类中但不在第一个位置时:

[a-z^]它失去了否定的特殊含义,它是一个文字^字符。因此,角色类现在匹配a-z范围内的单个字符或^