Регулярное выражение JavaScript для возврата последних цифр и ASP.Сетевой обработчик событий?
-
06-07-2019 - |
Вопрос
Дана следующая строка:'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.Обработчик сетевых событий, чтобы что-то сделать с возвращенным значением 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.Чистые скрытые поля, затем в 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, отлично!
Просто подумал, что поделюсь этим быстрым решением на случай, если оно понадобится кому-то еще.