У меня есть строка

var stringP= "hi".rand(1,10)." my".rand(10,100)."name is ".rand(23,54).rand(1,4)

Шаблон

rand(from,to)

Нужно получить

hi5 my54name is 335

Можно ли использовать что-то подобное?

stringP.replace(/rand(*,*)/g, function(match){
    return match.replace(rand(*,*),Math.floor(Math.random() * (to - from + 1) + from));
});
0
Adam 31 Янв 2013 в 03:47

2 ответа

Лучший ответ

Да, почти все возможно. Тем не менее, вы хотите использовать [one!] Правильное регулярное выражение и правильное заменить функцию:

stringP.replace(/rand\((\d+),(\d+)\)/g, function(match, from, to) {
    from = parseInt(from, 10);
    to = parseInt(to, 10);
    return Math.floor(Math.random() * (to - from + 1) + from);
});
3
Bergi 30 Янв 2013 в 23:52

Почему вы делаете это с регулярными выражениями? Вызовы функций имеют больше смысла.

function rand (to, from) {
    return Math.floor(Math.random() * (to - from + 1) + from).toString();
}

var stringP= "hi" + rand(1,10) + " my" + rand(10,100) + "name is " + rand(23,54) + rand(1,4);
2
epascarello 30 Янв 2013 в 23:52