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


regular expression for matching single characte only

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

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

这个代码匹配数组的第一个、第二个和第四个字符串。但我需要它只是匹配第二项(任何字符)。

试试这个表达式

^[a-z]$

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

/[a-z]/

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

除了第三个数组项之外的所有数组项都满足此要求。

现在如果你要把你的正则表达式括在锚中:

/^[a-z]$/

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

编辑:

您要求的是括号内外^的差值:

^在括号外时,单独表示字符串的开始。如果您转义'^,则表示从字面上匹配字符^。

^在括号内时,例如:

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

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