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

查询生成器的Javascript正则表达式,javascript,Javascript,过去可能有人问过这个问题,但我找不到合适的答案。我要寻找的是一种从sql查询中提取参数的方法,如下所示。查询将始终是EXEC语句,后跟查询名称和可能的参数 这是我可能收到的一个例子 EXEC [dbo].[myProcedure] @Param1 这也可以如下所示 EXEC [dbo].[myProcedure] @Param1, @Param2, @Param3 这些是输入将接受的唯一查询类型。至于我为什么要这样做,这是另一个问题,我已经下定决心走这条路了 我想要的是能够获取上述字符串并生

过去可能有人问过这个问题,但我找不到合适的答案。我要寻找的是一种从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);
    }
}
功能eParams(e){
变量i=e.indexOf('@');
如果(i)
(省略错误检查)


将返回数组。

此处失败:EXEC[dbo].[myProcedure]
@Param1
@Param2
@Param3
空格。。。
var s = "EXEC [dbo].[myProcedure] @Param1, @Param2, @Param3";
var i = s.indexOf('@');
var a = s.substr(i).split(/\s*,\s*/);
var str = 'EXEC [dbo].[myProcedure] @Param1, @Param2, @Param3';
(str).match(/(@[^\s,]+)/g);