这里只有一个方案失败,即不接受validate函数中的字母数字值。我的其他情况很好。请看下面的代码。
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
答案 0 :(得分:2)
您的正则表达式不允许(
之前的数字,但您的所有测试数据都有数字。如果您想允许数字,请将其更改为/^[a-z0-9]+(?:\(\d+\))?$/
。
如果你想允许数字,但不是第一个位置(一个相当常见的限制),那么/^[a-z][a-z0-9]*(?:\(\d+\))?$/