'03 ноя 2014'.replace(/(\d+)\s(\W+)\s(\d+)/,mth['$2']) результат undefined
доброго времени суток.
подскажите, почему при подстановке ключа в массив, получаю undefined?
var mth=[];mth['ноя']=11;
alert('03 ноя 2014'.replace(/(\d+)\s(\W+)\s(\d+)/,'$1.'+mth['$2']+'.$3'))
и как правильно построить данный запрос P.S. результат данной замены: 03.undefined.2014, а требуется получить 03.11.2014 |
var mth=[];mth['ноя']=11;
alert('03 ноя 2014'.replace(/(\d+)\s(\w+)\s(\d+)/,'$1.'+mth['$2']+'.$3'))
|
|
Cache,
Цитата:
Цитата:
Я пока не понял, что должно быть. Может быть Вы, таки, соизволите пояснить? |
krutoy, ноябрь должен быть заменен на 11 (значение ключа массива mth['ноя'])
|
т.е. Из даты '03 ноя 2014' нужно получить '03.11.2014'
\w+ - здесь не подойдет, т.к. \w - это любой лат. символ, а русские буквы не подподают под понятие - латиница |
Cache,
для такой замены используют функцию в replace -- параметры смотрите в документации |
рони, как пользоваться replace() - я знаю, и тут она, как бы и применяется, только чуть в другой форме
меня не устраивает вариант
alert('03 ноя 2014'.replace(' ноя ','.11.'));
по причине того, что месяцев, как вы понимаете - 12 и городить огород для перебора каждого значения - бред |
Цитата:
Цитата:
|
Цитата:
var mth={};mth['ноя']=11;
str='03 ноя 2014'
re=/([а-я]+)/
alert(str.replace(re, function(v){return mth[v]}))
|
Cache,
var mth = [];
mth["ноя"] = 11;
alert("03 ноя 2014".replace(/(\d+)\s(\W+)\s(\d+)/, function(a, b, c, d) {
return mth[c] ? b + "." + mth[c] + "." + d : a
}));
|
рони, спасибо, но все же, по каким причинам нельзя подставить $2 как ключ массива?
|
krutoy, вам тоже спасибо
|
Cache,
$2 часть шаблона второй строки которую нужно заменить -- на содержимое второй скобки первой строки - строка слева меняется на строку справа -- собрали строку справа из '$1.'+mth['$2']+'.$3' получили '$1.undefined.$3' и после перезаписали $1 и $3 на части из первой строки '03 ноя 2014' |
рони, спасибо, думаю понял, в чем ошибка
|
| Часовой пояс GMT +3, время: 13:05. |