регулярка и динам. шаблон
Здравствуйте!
Подскажите как мне получить аналогичную функцию на js из php
function preg_replace_fix($s){
$arr = array(
'm'=>'-',
'p'=>'+',
's'=>'/'
);
foreach ($arr as $key=>$val)
{
$s = preg_replace("/{".$key."}+/i",$val,(string)$s);
}
return $s;
}
получилось типа этого, но я не знаю будет ли работать, нет ли полегче способа. Сомнения в этом месте s = s.replace('/['+Globs.key+']+/g', '@'+key+'@');
Globs = {
m:'-',
p:'+',
s:'/'
};
function preg_replace_fix(s){
if(isArray(Globs) && s)
{
for(var key in Globs){
s = s.replace('/['+Globs.key+']+/g', '@'+key+'@');
}
}
return s;
}
спасибо! |
Если я правильно понял задание, то надо в строке все '-', '+', '/' заменить на '@m@', '@p@', '@s@' соответственно.
В 12-й строке нужно писать Globs[key], а не Globs.key, поскольку вы обращаетесь к свойству с ключом, заданным значением переменной key, а не с самим ключом 'key'. |
не работает вот эта строка s = s.replace('/['+Globs.key+']+/g', '@'+key+'@');
то есть должна быть литеральное выражение а не строка значит необходимо из строкового представления в латеральный, как сделать ? |
new RegExp('[\\\\' + Globs[key] + ']+','g')
|
| Часовой пояс GMT +3, время: 19:41. |