Re: [HS] preg_match php
Le 02/02/21 à 14:47, "ajh-valmer" <ajh.valmer@free.fr> a écrit :
> Bonjour,
>
> Je souhaite autoriser ces caractères :
>
> ^ 0 à 9 , + - * / .
>
> if (preg_match("#[^^\-9*+-/().$]#", $v)) {
> ....
>
> Ça ne marche pas :
> l'accent circonflexe (^) marque le début d'une chaîne,
> et se confond avec l'accent ^ autorisé
À l'intérieur de crochets, tu dois échapper tous les caractères qui ont une signification dans
ce contexte, ^ - et ] (je crois pas qu'il y en ait d'autres)
^ signifie le début de la chaîne hors des crochets, une négation si premier caractère entre
crochets.
> Comment présenter la bonne syntaxe de preg_match pour le faire ?
Je connais plus trop php mais je dirais
if (preg_match("#^[\^0-9+\-*/().]+$#", $v)) {
que tu dois pouvoir écrire
if (preg_match("#^[0-9^+*/().-]+$#", $v)) {
(pas besoin d'échapper le ^ s'il n'est pas en premier dans les crochets, ni le - s'il est en
dernier)
--
Daniel
La théorie est absurde dans la pratique
et la pratique est aveugle sans la théorie.
Kant
Reply to: