只允许一个字母字符 - RegEx

Bre*_*ett 1 php regex

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

我试过这个..

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

/* Validate char */

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

echo $char;
Run Code Online (Sandbox Code Playgroud)

还有这个..

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

/* Validate char */

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

echo $char;
Run Code Online (Sandbox Code Playgroud)

但是没有工作.即使$_REQUEST['char']等于,它们也总是输出结果aa.

cee*_*yoz 8

你匹配一个字符,但你不配套只有一个字符.具有至少一个字母字符的任何字符串都将通过您当前的正则表达式.

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

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

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