如何验证字符串和字母数字值?

时间:2013-12-09 17:57:21

标签: javascript

这里只有一个方案失败,即不接受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

1 个答案:

答案 0 :(得分:2)

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

Updated Fiddle

如果你想允许数字,但不是第一个位置(一个相当常见的限制),那么/^[a-z][a-z0-9]*(?:\(\d+\))?$/

Updated Fiddle