我需要验证表单的 2 个字段,$nombre
并且$apellidos
.
我一直在尝试这段代码,但它不符合我想应用于验证的所有条件,包括名字和姓氏中的常见空格:
if (!preg_match("/^[a-zA-Z'-]+$/",$nombre)) {
echo "El nombre tiene caracteres inválidos";
}
我需要的是以下内容(名字和姓氏将使用相同的验证,除了长度):
- 它应该只包含 az AZ 字符(包括字母Ñ和空格)。
- 最少 3 个字符(不包括空格)
- 姓名最多 18 个字符,姓氏最多 36 个字符。
我的代码:
// Validar nombre
if (!preg_match("/^[a-zA-Z'-]+$/",$nombre)) {
array_push($errors, "El nombre contiene caracteres inválidos.");
} else if (strlen($firstname) > 18) {
array_push($errors, "El nombre solo puede contener hasta 18 caracteres.");
} else if (strlen($firstname) < 3) {
array_push($errors, "El nombre debe tener al menos 3 caracteres.");
}
// Validar apellidos
if (!preg_match("/^[a-zA-Z'-]+$/",$apellidos)) {
array_push($errors, "Los apellidos contienen caracteres inválidos.");
} else if (strlen($lastname) > 36) {
array_push($errors, "Los apellidos solo pueden contener hasta 36 caracteres.");
} else if (strlen($lastname) < 3) {
array_push($errors, "Los apellidos debe tener al menos 3 caracteres.");
}
如您所见,它缺少 SPACE 过滤器和字母 Ñ。就长度而言,我已经有了它,只有最少 3 个字符会丢失,但只计算字母而不计算空格,因此这是无效的:" "
注意:
array_push($errors, "Mensaje de error.");
$errors
它是一个存储所有错误的数组,稍后会在表单中显示它们。
我想我有它:
姓名:
/^(?=.{3,18}$)[a-zñA-ZÑ](\s?[a-zñA-ZÑ])*$/
(?=.{3,18}$)
-> 检查长度,如果大于 3 且小于 18 个字符[a-zñA-ZÑ]
-> 查看第一个单词,如果它符合仅按字母顺序排列的规则,则ñ
包含(\s?[a-zñA-ZÑ])
-> 如果有空格,我表示会有另一个单词姓氏相同,但我们指出最多为 36 个字符:
^(?=.{3,36}$)[a-zñA-ZÑ](\s?[a-zñA-ZÑ])*$
.显然,如果开头有 3 个空格,它将与您不匹配。希望这可以帮到你。
试试这个例子,在这里我允许所有可用于形成名字和姓氏的字符,我验证它们的长度,如果你想知道他们失败的确切原因,让我知道编辑答案