JavaScript Regex для возврата последних цифр и обработчик событий ASP.Net? - PullRequest
0 голосов
/ 28 октября 2009

Учитывая следующую строку: '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?

Ответы [ 3 ]

2 голосов
/ 28 октября 2009

Вы можете попробовать следующее. Следует после форматирования и сгруппировать последний набор чисел.

/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 никогда не будут работать одновременно.

1 голос
/ 28 октября 2009

Вы можете сопоставить последние цифры в строке следующим образом:

function getFolderId(str) {
    var pattern = /([0-9]+)$/;
    var result = pattern.exec(str);
    return result ? result[1] : null;
}
0 голосов
/ 28 октября 2009

По вопросу возврата параметров 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, то отлично!

Просто подумал, что поделюсь этим быстрым исправлением на случай, если кому-то еще понадобится.

...