给出以下字符串:'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值?

有帮助吗?

解决方案

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

/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将永远不会同时执行。

其他提示

您可以这样匹配字符串中的最后一位数字:

function getFolderId(str) {
    var pattern = /([0-9]+)$/;
    var result = pattern.exec(str);
    return result ? result[1] : null;
}

关于将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风格,那太好了!

我以为我会分享这个快速解决方案以防其他人需要它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top