0

给定以下字符串:'s0\\8\\26\\29\\30\\32' 或 's0\\8\\26\\' 或 's0\\5',我需要返回最后一位数字的字符串。

鉴于:

 function getFolderID(mystr) {
        var reFolderID = /\bs0\\\\[0-9]+\b/g //regexp to return s0\\34
        var retArr = [];
        var retval = '';

        retArr = mystr.match(reFolderID);
        retArr = retArr[0].replace(/s0\\\\/g, "");

        if (retArr != null) {
            retval = retArr[retArr.length - 1];
        }
        //alert("Ret: " + retval);
        return retval;
    }  

起初我以为我只需要第一个数字,但结果我需要最后一个数字。

正确的正则表达式术语是什么?

另外,如何创建一个 ASP.Net 事件处理程序来处理返回的 JS 值?

4

3 回答 3

2

您可以尝试以下方法。它应该遵循格式并将最后一组数字分组。

/s0\\\\(?:[0-9]+\\\\)*([0-9]+)/

所以,像:

function getFolderID(mystr) {
    // search string for last group of digits in the pattern
    var matches = mystr.match(/s0\\\\(?:[0-9]+\\\\)*([0-9]+)/);

    // if matches is null, replace with "defaults"
    matches ||= ["", ""];

    // grab the first grouped match
    return matches[1];
}

至于 ASP.NET 事件,您可能必须使用 Ajax——例如通过<asp:UpdatePanel />或您选择的 Ajax 库(jQuery、Prototype 等)。

如果没有 Ajax,JavaScript 和 ASP.NET 将永远不会同时执行。

于 2009-10-28T05:48:41.403 回答
1

您可以通过这种方式匹配字符串中的最后一位数字:

function getFolderId(str) {
    var pattern = /([0-9]+)$/;
    var result = pattern.exec(str);
    return result ? result[1] : null;
}
于 2009-10-28T05:16:37.750 回答
0

关于向服务器返回Javascript参数的问题...

我创建了两个 ASP.Net 隐藏字段,然后在 JS 中设置这些字段的值...瞧 - 可从我的代码隐藏中获得:

    // set .net hidden control values so they're server-side accessible
    document.getElementById('ctl00_ContentPlaceHolderMainBody_HidTreeContextAction').value = buttonAction;
    document.getElementById('ctl00_ContentPlaceHolderMainBody_HidTreeContextID').value = buttonFolder;

<asp:HiddenField ID="HidTreeContextAction" runat="server" />
<asp:HiddenField ID="HidTreeContextID" runat="server" />

现在的工作流程是:1)用户右键单击树节点 2)出现上下文菜单 3)选择上下文菜单项会触发设置隐藏值的 JS 4)ajax 样式窗口似乎接受用户输入 5)用户单击提交6)使用两个参数来确定数据的去向/去向

我意识到这可能有点像黑客,而不是使用 AJAX。如果有人愿意分享这将如何以 ajax 风格完成,那太好了!

只是想我会分享这个快速修复,以防其他人需要它。

于 2009-10-28T19:27:01.177 回答