J'ai une chaîne du format: string:num
où num est un nombre quelconque, mais string est une chaîne connue sur laquelle je dois faire correspondre. J'aimerais avoir ceci dans une déclaration if comme:
if( it matches 'string:' followed by a number) {
//do something
}
Tu veux ...
if (stringYouHave.match(/^string:([0-9]+)$/)) {
// do something
}
Ceci comprend:
^
début de la chaînestring:
le littéral "chaîne:" que vous avez mentionné(.....)
Cette sous-expression, à laquelle vous pourrez vous référer ultérieurement si vous avez besoin de savoir quel nombre est dans la chaîne (même si dans ce cas particulier, vous pouvez simplement remplacer 'string:'
par ''
)[0-9]
a caractère entre 0
et 9
(c'est-à-dire un chiffre)+
Doit avoir au moins un "de ceux" (c'est-à-dire les chiffres mentionnés ci-dessus), mais peut avoir n'importe quel nombre$
fin de la chaîneif( it.match(/^string:\d+$/) ( {
...
}
Si vous souhaitez uniquement vérifier si la chaîne d'entrée correspond au modèle, vous pouvez utiliser la fonction RegExp.test :
if (/^string:[0-9]+$/.test(input)){
//..
}
ou avec la fonction String.search :
if (input.search(/^string:[0-9]+$/) != -1){
//..
}
Si vous voulez valider et obtenir le numéro:
var match = input.match(/^string:([0-9]+)$/),
number;
if (match){
number = +match[1]; // unary plus to convert to number
// work with it
}
Ce qui précède convient aux nombres entiers. si vous voulez des nombres à virgule flottante, ou même une notation scientifique (telle que comprise dans les langages de type C), vous voudrez quelque chose comme ceci:
if (stringYouHave.match(/^string:[+-]?[0-9]+(\.[0-9]+)?([eE][+-]?[0-9]+)?$/))
{
// do something
}
Vous pouvez supprimer le premier [+ -]? si vous ne vous souciez pas du signe, le (. [0-9] +)? si vous ne vous souciez pas des points flottants, et du ([eE] [+ -]? [0-9] +)? si vous ne vous souciez pas des exposants de notation scientifique. Mais s'il y a une chance que vous souhaitiez faire correspondre celles-ci, vous voulez les inclure comme facultatif dans la regex.
if(teststring.match(new RegExp("^" + knownstring + ":\d+$"))) {
// some code
}
if(!!"string:5456".match(/^string:\d+$/)) { ... }
Le nombre est un entier dans l'exemple ci-dessus.