Ayuda con REGEX

  • Autor Autor BotPress
  • Fecha de inicio Fecha de inicio
B

BotPress

Delta
Programador
Hola,

La verdad es que soy bastante malo en regex y agradecería la ayuda de algun beta en esta tarea....

Necesito un regex que verifique que una string empieza por MAYUSCULA y como máximo contenga 5 MAYUSCULAS (consecutivas o no) en toda la string.


Una ayudita pls? 😛irate:

- - - Actualizado - - -

Alguien? :fatigue::fatigue::fatigue:
 
[MENTION=82564]BotPress[/MENTION] No sé con regex, pero lo que puedes hacer es separar el string en cada letra y luego comparar cada una de ellas, si es mayúscula o no, y además poner un contador y al final verificar si son más de 5 o no, algo así hice:

PHP:
<form method="post">
	<input type="text" name="a" placeholder="Escribe..." value="<?php echo !empty($_POST['a']) ? $_POST['a'] : ''; ?>">
	<input type="submit">
</form>
<?php
if (!empty($_POST['a'])) {
	$chars = str_split($_POST['a']);
	$mayusculas = 0;
	if(ctype_upper($chars[0]))
		echo 'Empieza en mayuscula!!<br>';
	else
		echo 'NO empieza en mayuscula!!<br>';
	foreach ($chars as $key) {
		if(ctype_upper($key))
			$mayusculas++;
	}
	if($mayusculas > 5)
		echo 'Hay mas de 5 mayusculas!!<br>';
	else
		echo 'NO hay mas de 5 mayusculas!!</br>';
}
?>

Funciona bien.
P.D si alguien lo puede hacer mejor, que lo haga, yo ya tengo como 6 meses sin programar y solo de esta forma se me ocurrió XD
 
Aquí tienes la solución amigo:

Insertar CODE, HTML o PHP:
$re = '/^[A-Z]{1,5}$/';
$str = 'ASDAS';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

// Print the entire match result
var_dump($matches);

Saludos.
 
[MENTION=82564]BotPress[/MENTION]

PHP:
$regex = '/^[A-Z]([^A-Z]*[A-Z]?[^A-Z]*){4}$/';

$string = 'Hola ForoBeta';

echo preg_match($regex, $string) ? 'Correcto': 'Incorrecto';
 

Temas similares

Atrás
Arriba