J'ai utilisé la fonction de correspondance pour l'expression régulière.
le code que j'utilise est
if(val.match(/^s+$/) || val == "" )
mais les erreurs javascript avec
"val.match is not function"
Je ne peux pas trouver quel est le problème,
merci d'avance
Je dirais que val n'est pas une chaîne.
J'obtiens l'erreur "val.match is not function" pour ce qui suit
var val=12;
if(val.match(/^s+$/) || val == ""){
document.write("success: " + val);
}
L'erreur disparaît si vous convertissez explicitement en une chaîne String (val)
var val=12;
if(String(val).match(/^s+$/) || val == ""){
document.write("success: " + val);
}
Et si vous utilisez une chaîne, vous n'avez pas besoin de faire la conversion
var val="sss";
if(val.match(/^s+$/) || val == ""){
document.write("success: " + val);
}
le problème est: val n'est pas une chaîne
je peux penser à deux options 1) convertir en chaîne: pourrait être une bonne option si vous êtes sûr que val doit être une chaîne
"Identique à la réponse ci-dessus"
var val=12;
if(String(val).match(/^s+$/) || val == ""){
document.write("success: " + val);
}
2) sautez la ligne: dans mon cas, il était préférable de simplement vérifier le type de val et de sauter s'il ne s'agit pas d'une chaîne, car ce n'était pas une bonne idée d'exécuter la fonction "match" de toute façon.
val = 12;
if( val.match) {
if(val.match(/^s+$/) || val == "" ) {
document.write("success: " + val);
}
} else {
document.write("not a string: " + val);
}
REMARQUE: ce qui en fait une réponse comme suggéré ci-dessus de mon commentaire.
Assurez-vous que val est défini et une chaîne. En outre, je suppose que c'est une faute de frappe que vous n'avez pas de barre oblique avant le "s" dans votre expression régulière. Si tel est le cas, vous pouvez remplacer votre test if par "if (val.match (/ ^\s * $)"