0

我有一个字符串

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));
});
4

2 回答 2

3

是的,几乎一切皆有可能。但是,您想使用 [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);
});
于 2013-01-30T23:52:17.330 回答
2

你为什么用正则表达式来做这个?函数调用更有意义。

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);
于 2013-01-30T23:52:32.097 回答