'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, время: 07:46. |