2009-02-04 7 views
0

$ J'ai besoin d'une fonction javascript qui obtient une chaîne et retourne false si la chaîne contient
- Tout symbole dollar unclosed
- Ou un symbole dollar fermé avec quelque chose entre dollars différent d'une série de caractères

function validateFormat(text) { 
// Do stuff 
} 

Par exemple, si le texte:

validateFormat("blab abalaba $something$ avava $affo$") -> true 
validateFormat("blab abalaba $something$ avava $ affo$") -> false because of the white space 
validateFormat("blab abalaba $1so3mething$ avava $affo$") -> false because of the numbers 
validateFormat("blab abalaba $something") -> false because of unclosed placeholder 

quelqu'un peut me aider?

Répondre

3
// delete all valid placeholders 
text = text.replace(/\$[a-z]+\$/gi, ""); 

// are there any "$" left? 
if (text.search(/\$/) != -1) { 
    return false; 
} 
return true; 

Ceci est une autre solution:

matches = text.match(/\$[a-z]+\$|\$/gi); 
if (matches) { 
    for (var i = 0; i < matches.length; i++) { 
     if (matches[i] == '$') { return false }; 
    } 
} 
return true; 
3

Une autre façon:

text.match(/\$/g).length/2 == text.match(/\$[a-z]+\$/g).length 

Ce compte le nombre de $ et le compare au nombre de $foobar$.

+0

N'y at-il pas une longueur de fichier manquante? –

+0

btw: J'aime beaucoup cette solution. –

+0

Woops. Merci pour la remarque, gs. – Gumbo

Questions connexes