#javascript
#javascript
Вопрос:
У меня есть следующая процедура для замены временной части строки даты и времени, отображаемой в параметрах выпадающего списка под названием «Неделя продаж». Метод Replace не заменяет ту часть строки, которой, как ожидается, будет соответствовать регулярное выражение.
Когда в браузере выполняется следующая процедура (FF):
var select = $('#SalesWeek');
var item = '';
$.each($('#SalesWeek option'), function(){
item = $(this).text();
console.log('before: ' item);
var regex = new RegExp(/(s([0]d|[1][0-2])(:[0-5]d){1,2})*s*([aApP][mM]{0,2})/);
item.replace(regex,'');
console.log('after: ' item);
$(this).html(item);
});
На консоль выводится следующее:
before: 12/31/2011 12:00:00 AM
after: 12/31/2011 12:00:00 AM
Но я ожидаю:
before: 12/31/2011 12:00:00 AM
after: 12/31/2011
Я пытался использовать $(this).html() и $(this).text(), чтобы получить начальное значение, думая, что, возможно, есть символы, которые я просто не вижу в консоли ни для того, ни для другого случая … но, похоже, это не имеет значения.
Я протестировал регулярное выражение для использования в javascript по следующей ссылке: http://www.regxlib.com/RETester.aspx
Использование движка javascript
Test Expression: (s([0]d|[1][0-2])(:[0-5]d){1,2})*s*([aApP][mM]{0,2})
Input Value: 12/3/2011 12:00:00 AM
Expected Match: 12:00:00 AM
Похоже, он работает без проблем. Обратите внимание, что я удалил начальные «/» и конечные «/» в выражении при тестировании, но я считаю, что «/» необходимо при создании нового регулярного выражения в javascript. Возможно, я ошибаюсь в этом, и есть другой способ, но, похоже, я получаю ошибку в firebug, если выражение, которое я пытаюсь создать, не заключено таким образом.
Кажется, я всегда нахожу ответы, которые я ищу в Stack Overflow, на большинство проблем, с которыми я сталкиваюсь … но я нахожусь в loss…so , Я достаточно унижен, чтобы быть тем, кто задает вопрос на этот раз … Любая помощь очень ценится…
Комментарии:
1. (Если подумать, это лучше как комментарий) Что не так с этим регулярным выражением?
var str = "12/31/2011 12:00:00 AM after: 12/31/2011"; str = str.match(/[^s] /)[0]; console.log(str);
2. Есть ли веская причина использовать регулярное выражение для этого? Похоже, что дата остановится на первом пробеле.
3. Привет, Дэйв … работаю над приложением MVC3 … возвращаю «Список выбора» из действия контроллера, назначенного переменной ViewBag, SalesWeekId. Отображение с помощью помощника Html… нужна короткая дата для отображения. Аннотация данных из модели не влияет на использование таким образом, не уверен, почему … использование аннотаций без проблем во всем приложении … немного поискал … ничего не нашел … пока все в порядке.
4. @djs Я просто говорю, что регулярное выражение кажется излишним, поскольку вы знаете формат, который получаете, и имеете согласованный разделитель.
Ответ №1:
Вы не присваиваете результат.
item = item.replace(regex,'');