我无法获得与正好单个字符匹配的正则表达式。
$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 :(得分:2)
试试这个表达
^[a-z]$
^
表示字符串的开头,$
表示字符串的结尾。
答案 1 :(得分:2)
/[a-z]/
那是什么意思?匹配a-z中的单个字符。
除第3个以外的所有数组条目都满足此要求。因此全部匹配。
现在,如果你要将你的正则表达式包含在锚点中:
/^[a-z]$/
它只匹配字符串的开头,后跟一个字母,后跟字符串的结尾,即数组中的第二个条目。
编辑:
您询问了括号内外的区别:
当^
在括号之外时,单独表示字符串的开头。如果你将其\^
转义,则意味着字面上匹配字符^。
当^
位于括号内时,例如:
[^a-z]
它有效地否定了这个角色类,这意味着你应该匹配那些不是rance a-z
中的角色的东西。因此,这可以匹配例如9
,A
,#
等。最后,当^
位于字符类中但不在第一个位置时:
[a-z^]
它失去了否定的特殊含义,它是一个文字^
字符。因此,角色类现在匹配a-z范围内的单个字符或^
。