Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

RegExp...

3 réponses
Avatar
loiseauthierry
Salut,

Je souhaite tester une chaîne de caractère et vérifier via RegExp
qu'elle ne contient que des chiffre, au plus un seul "." et les symboles
"+*-/"

if (???) {action}

Merci par avance pour vos solutions,

Bon confinement

--
* * __*__ *
* * * -----oOOo--- O ---oOOo------- * *
http://astrophoto.free.fr *
* * -------- oOOo oOOo ---------- *

3 réponses

Avatar
Olivier Miakinen
Bonjour,
Le 30/03/2020 10:25, Thierry Loiseau a écrit :
Je souhaite tester une chaîne de caractère et vérifier via RegExp
qu'elle ne contient que des chiffre, au plus un seul "." et les symboles
"+*-/"
if (???) {action}

Si c'est la syntaxe JavaScript qui t'intéresse pour tester qu'une chaîne
de caractères « str » répond à la regexp « re », je crois que tu as le
choix entre :
str.match(re)
et :
re.test(str)
Mais si ce que tu veux savoir c'est quelle regexp répondra à ta question,
alors le bon groupe est en principe fr.comp.lang.regexp.
Cela dit, vu la simplicité de la demande, voici ce que je te suggère
comme regexp : /^[-+*/0-9]*(.[-+*/0-9]*)?$/ (pour une demande plus complexe,
par exemple si tu veux toujours que des chiffres séparent chaque opération
arithmétique, voir vraimentfr.comp.lang.regexp).
Cordialement,
--
Olivier Miakinen
Avatar
loiseauthierry
Olivier Miakinen <om+ wrote:
Bonjour,
Le 30/03/2020 10:25, Thierry Loiseau a écrit :
Je souhaite tester une chaîne de caractère et vérifier via RegExp
qu'elle ne contient que des chiffre, au plus un seul "." et les symboles
"+*-/"
if (???) {action}

Si c'est la syntaxe JavaScript qui t'intéresse pour tester qu'une chaîne
de caractères « str » répond à la regexp « re », je crois que tu as le
choix entre :
str.match(re)
et :
re.test(str)
Mais si ce que tu veux savoir c'est quelle regexp répondra à ta question,
alors le bon groupe est en principe fr.comp.lang.regexp.
Cela dit, vu la simplicité de la demande, voici ce que je te suggère
comme regexp : /^[-+*/0-9]*(.[-+*/0-9]*)?$/ (pour une demande plus complexe,
par exemple si tu veux toujours que des chiffres séparent chaque opération
arithmétique, voir vraimentfr.comp.lang.regexp).
Cordialement,

C'est étrange, ton regexp ne fonctionne pas du tout ; j'ai adopté cela :
modele=/([A-Za-z])/
avec pour suivre :
if (!modele.test(this.value)
--
* * __*__ *
* * * -----oOOo--- O ---oOOo------- * *
http://astrophoto.free.fr *
* * -------- oOOo oOOo ---------- *
Avatar
Olivier Miakinen
Bonjour,
Le 03/04/2020 16:56, Thierry Loiseau m'a répondu :
Je souhaite tester une chaîne de caractère et vérifier via RegExp
qu'elle ne contient que des chiffre, au plus un seul "." et les symboles
"+*-/"
if (???) {action}

[...]
/^[-+*/0-9]*(.[-+*/0-9]*)?$/

C'est étrange, ton regexp ne fonctionne pas du tout ;

C'est étrange en effet. J'avais confiance dans ma regexp et je viens de la
vérifier sur https://www.regextester.com/, elle fait bien ce que tu demandes.
Ok :
"12345"
"12345.67"
"35.2//*-23"
"12.+*-/"
"."
Non ok :
"12345a"
"12345.67.89"
".."
j'ai adopté cela :
modele=/([A-Za-z])/
avec pour suivre :
if (!modele.test(this.value)

Mais ça ne teste pas du tout ce que tu souhaitais ! Enfin... plus exactement
ça accepte *beaucoup plus* que ce que tu avais décrit. Par exemple les deux
chaînes suivantes seront acceptées par ton test :
"%~#)=<<é§" (des caractères autres que ceux spécifiés)
"1.2.3.4.5" (plusieurs ".")
Mais bon, si tu es content, mieux.
--
Olivier Miakinen