Testeur de regex

Contenu du snippet

Dans le cadre des champs de formulaire, on contrôle la validité de l'entrée par une regex.

Sauf que pour un champ donné, disons l'adresse email par exemple, on trouve 3 milliards de regex sur le net, et bien sûr, pas deux identiques. Sans compter que ce sont souvent les débutants qui postent leur belle regex toute fraiche sortie de leur petits doigts fébriles tapotant sur son nouveau clavier bluetooth. (moi aussi j'ai des petits doigts fébriles -:)

Résultat: peu de regex trouvées sur le net fonctionnent vraiment ou correspondent exactement à votre besoin propre.

D'où ce tout petit script utilitaire uniquement pour vérifier les regex sur votre système ou pour vous aider à comprendre les regex et autres pcre/posix.

Soit on tape la regex à tester dans le champ prévu à cet effet, soit on laisse le champ vide, et le test sera effectué sur le tableau de regex inclus dans le script. Bien sûr, il suffit d'en ajouter d'autres en fonction de ce que vous voulez tester.

Nota:
- A n'utiliser qu'en admin évidemment.
- C'est aussi largement améliorable en ajouter des preg_match_all, en vérifiant les retour etc..

PS: il y a quand même un site plutôt pas mal pour les regex, mais c'est surtout US donc pour les adresses, pas très utile...
http://regexlib.com/Default.aspx

Source / Exemple :


<?php
 
session_start();
error_reporting(E_ALL);

// QQ REGEX
	$_SESSION['regex'] = array(
	'nom'			=> "#[a-zéèàêâùïüëA-Z][^0-9]#",
	'prenom'		=> "#[a-zéèàêâùïüëA-Z][^0-9]#",
	'raison_sociale'=> "#[a-zéèàêâùïüëA-Z][^0-9]#",
	'telephone'		=> "#^0[1-689]([-. ]?[0-9]{2}){4}$#",
	'email'			=> "#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#",
	'siret'			=> "#[0-9]{14}#",
	'ape_naf'		=> "#[0-9]{5}#",
	'rue'			=> "#^[a-zA-Z0-9 ,-/éèàêâùïüë]{0,50}$#",
	'ville'			=> "#^[a-zA-Z1-9-/ éèàêâùïüë]{1,50}$#",
	'code_postal'	=> "#^[0-9]{2} ?[0-9]{3}$#",
	'date_naissance'=> "#^[0-3]?[0-9]/\-[01][0-9]/\-[0-9]{4}$#",
	'login'			=> "#^[a-zA-Z0-9_@]{4,20}$#",
	'pwd'			=> "#^[a-zA-Z0-9_@]{8,20}$#",
	'phrase_cle'	=> "#[a-zéèàêâùïüëA-Z]#",
	'ip'			=> '#^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$#',
	'test_ip1'		=> '#^(168|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$#'
	
	);
	
// Testeur de regex

if (isset($_POST['reg']) && isset($_POST['val']) ) {
	$value = htmlspecialchars($_POST['val']);

	// teste d'une seule regex
	if (!empty($_POST['reg'])) {
		$regex = htmlspecialchars($_POST['reg']) ;
		if ( preg_match( $regex, $value, $matches ) ) {
			echo '<br/><b>Ok</b>: <u>'. $value . '</u> matche avec <u>' . $regex . '</u><br/>' ;
		}
		else{
			echo '<br/><b>NOk : <u>'. $value . '</u> ne </b> matche <b>pas</b> avec <u>' . $regex . '</u><br/>' ;
		}
	}
	// teste le tableau des regex
	else {
		$regex = $_SESSION['regex'];
		foreach($regex as $reg_name => $reg) {
			if ( preg_match( $reg, $value) ) {
				echo '<br/>Match: La regex <b>' . $reg_name . '</b>(<u>'. $reg . '</u>) matche avec la valeur <u>' . $value .'</u>';
			}
		}
	}
}

echo '<form method="post" action="/admin/test_regex.php">';
	echo '<p>';
		echo '<label for="reg">La regex </label><br/>';
		if (is_array($regex)) {$aff='';} else { $aff=$regex;}
		echo '<input type="text" id="reg" name="reg" size="100" value="'. $aff . '"/><br/>';
		echo '<label for="ma_valeur">La valeur à tester </label><br/>';
		echo '<input type="text" id="ma_valeur" name="val" size="100" value="'. $value. '"/>';
	echo '</p>';
	echo '<p>';
       echo '<input type="submit" /> <input type="reset" />';
   echo '</p>';

echo '</form>';

?>

Conclusion :


void

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.