如果缺少字符串,如何插入括号和值?

时间:2013-12-05 11:01:58

标签: javascript jquery regex

这里我有逗号字符串组,如“stack,flow(2),over(4),temp(0)”如果只是字符串没有打开和关闭括号值,我需要插入with(1) 。堆(1)。

Expected scenario :

1.insert (1) missing open & close parentheses 
2.within parentheses should be >0 numeric values.
3.within parentheses if any alpha character , show error message.

因为我需要验证在括号中的值应该是数字。我尝试了一些场景,但我需要帮助插入(1)。

function testCases(str){
    return (
    str.match(new RegExp("\\([^,]+\\)","g")).length  == str.split(",").length
    );
}

这是jsfiddle

2 个答案:

答案 0 :(得分:5)

如果我正确理解你想在逗号之前插入(1),如果没有括号组,那么你可以这样做:

var str = "stack,flow(2),over(4),temp(0)";
str = str.replace(/([^)]),/g, "$1(1),");

结果:"stack(1),flow(2),over(4),temp(0)"

如果您还想确保该组包含严格正整数,您可以

var str = "stack,flow(2),flow(k),over(4),neg(-3),temp(0)";
str = str.split(',').map(function(s){
    return s.replace(/(\((.*?)\))?$/, function(s,d,e) {
        return '('+ (e>0?e:1)+')'
    })
}).join(',');

结果:"stack(1),flow(2),flow(1),over(4),neg(1),temp(1)"

答案 1 :(得分:0)

嗯,我的解决方案有点复杂,但更具有相关性,例如它适用于:

stacka(z),flow(2),over(4),temp(0),ccc

这里是代码:

function convert(str) {

    //ends with (num)
    var regexObj = /\(\d+\)$/;

    return str.split(',').map(function(p) {

        return p + (regexObj.test(p) ? '' : '(1)');

    }).join(',');
}

http://jsfiddle.net/rooseve/pU2Q7/