查询生成器的Javascript正则表达式

时间:2012-05-21 09:09:44

标签: javascript

过去可能会问过这个问题,但我找不到合适的答案。我正在寻找的是从sql查询中提取参数的方法,如下所示。查询将始终是一个EXEC语句,后跟查询名称和可能的参数。

这是我可以收到的一个例子

EXEC [dbo].[myProcedure] @Param1

这也可以如下

EXEC [dbo].[myProcedure] @Param1, @Param2, @Param3

这些是输入将采用的唯一类型的查询。至于为什么我这样做,那么这就是另一个问题,而且我已经准备好走这条路了。

我正在寻找的是能够获取上述字符串并生成一系列值,例如

['@Param1','@Param2','@Param3',....]

我最初尝试使用一个简单的while语句,但我似乎有很多问题。

我希望这个问题有道理,

干杯,

尼科

[编辑]

使用以下语句对此进行排序

function eParams(e) {
    var i = e.indexOf('@');
    if (i <= 0)
        return;
    e = e.substring(i);
    var p = e.split(',');
    var eList = [];
    var s = '';
    for (var i = 0, j = p.length - 1; i <= j; i++) {
        var sP = p[i].trim();
        if (sP.indexOf('@') < 0)
            continue;
        eList.push(sP);
    }
}

2 个答案:

答案 0 :(得分:2)

var str = 'EXEC [dbo].[myProcedure] @Param1, @Param2, @Param3';
(str).match(/(@[^\s,]+)/g);

将返回一个数组。

答案 1 :(得分:0)

var s = "EXEC [dbo].[myProcedure] @Param1, @Param2, @Param3";
var i = s.indexOf('@');
var a = s.substr(i).split(/\s*,\s*/);

(省略错误检查)