只允许一个字母字符 - RegEx

时间:2011-12-21 19:27:29

标签: php regex

我试图只允许一个单一的角色起诉正则表达式,但它似乎允许多个金额通过。

我试过了..

$char = trim($_REQUEST['char']);

/* Validate char */

if (preg_match('/[^a-zA-Z]{1}/', $char)) {
    $char = 'a';
}

echo $char;

和... ..

$char = trim($_REQUEST['char']);

/* Validate char */

if (!preg_match('/[a-zA-Z]{1}/', $char)) {
    $char = 'a';
}

echo $char;

但是都不行。即使$_REQUEST['char']等于aa,它们也始终输出结果。

2 个答案:

答案 0 :(得分:8)

您匹配一个字符,但您不匹配一个字符。任何包含至少一个字母字符的字符串都会传递当前的正则表达式。

if (!preg_match('/^[a-zA-Z]$/', $char)) {
    $char = 'a';
}

^表示字符串的开头,$表示结束。在这种情况下不需要{1}

您也可以在strlen($char) == 1声明中查看if

答案 1 :(得分:2)

你走了。您需要使用^来匹配开头,并使用$来匹配您要匹配的字符串的结尾。

<?
$char = "aa";
/* Validate char */
if (preg_match('/^[a-zA-Z]$/', $char)) {
   echo "found only ONE char";
} else {
echo "one single char not found"
}
?>