2013-12-09 37 views
0

这里只有一个场景失败,那就是不接受validate函数中的字母数字值。我的另一个场景很好。请看下面的代码。如何验证字符串和字母数字值?

jsfiddle

function validateChunk(s) 
{ 
    return !!s.match(/^[a-z]+(?:\(\d+\))?$/); 
} 

function filterValid(v) 
{ 
    return !v; 
} 

function testCases(str) 
{ 
    var chunks = str.split(","); 
    var validated = chunks.map(validateChunk); 
    return (0 === validated.filter(filterValid).length); 

} 

实际输出:

"stack1(1),flow3test(7),over1,temp5"; - false 

预期输出:

"stack1(1),flow3test(7),over1,temp5"; - true 

回答

2

你的正则表达式不允许位之前(,但所有的测试数据在那里有数字。如果要允许数字,请将其更改为/^[a-z0-9]+(?:\(\d+\))?$/

Updated Fiddle

如果你想允许数字,但不能在第一位置(一个相当普遍的限制),然后/^[a-z][a-z0-9]*(?:\(\d+\))?$/

Updated Fiddle

+0

谢谢,良好的渔获物。 – user2848031

相关问题