[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: