2009-02-04 51 views
0

我需要一个javascript函数得到一个字符串,如果字符串包含
返回false只有美元符号 - 任何未关闭的美元符号
- 或者用一个封闭的美元符号美元之间的东西比一系列字符

function validateFormat(text) { 
// Do stuff 
} 

的不同。例如,如果文本:

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 

有人能帮助我吗?

回答

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

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

这是另一种解决方案:

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

另一种方式:

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

此功能可统计$数量,并将其与的$foobar$数量。

+0

是不是没有.length缺失? – 2009-02-04 16:39:20