这是具有多个场景的字符串验证。 Case1和case 6是有效的场景,其他情况都是无效的情况。我的验证码不适用于case2和case5以及case6。
验证码:
function testCases(str){
return (str.match(new RegExp("\\([^,]+\\)","g")).length == str.split(",").length)
}
实际验证输出:
stack(2),flow(2),over(4),temp(7): true
stack(2),flow(3),over(4),temp(k): true
stack(2),flow(2),over(4),temp(0: false
stack(2),flow(2),over(,temp): false
stack(2),flow(2),over(4)temp(8): true
stack(1),flow(7),over,temp: false
stack(1),flow(),over,temp: false
我的期望输出:
stack(2),flow(2),over(4),temp(7): true
stack(2),flow(3),over(4),temp(k): false
stack(2),flow(2),over(4),temp(0: false
stack(2),flow(2),over(,temp): false
stack(2),flow(2),over(4)temp(8): false
stack(1),flow(7),over,temp: true
stack(1),flow(),over,temp: false
答案 0 :(得分:1)
您的验证码只是检查以确保您拥有的paren组数量与逗号分隔的术语数量相匹配,因此它不会执行您想要的操作。您应该单独检查条款:
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);
}