Let's say I have a string like this:
This is just a test {#3,2,7,9} this is another test {#21,2,11}
How can I retrieve all instances of {#x,y,..} and replace it with a random number it contains?
For example, the string above could become:
This is just a test 2 this is another test 11
Try using replace() method
Regex Demo
https://regex101.com/r/s3O59z/1
let string = 'This is just a test {#3,2,7,9} this is another test {#21,2,11}'
let result = string.replace(/{#(.*?)}/g, (match, p1) => {
let nums = p1.split(',')
return nums[Math.floor(Math.random() * nums.length)]
})
console.log(result)
There are multiple ways to do this. The more modern way is to use a template literal, To retrieve a random value from a given Array you can create a small helper method. Something like:
const randomValue = arr => arr[Math.floor(Math.random() * arr.length)];
const testing = `This is just a test ${
randomValue([3,2,7,9,112,18,37,12])} this is another test ${
randomValue([21,2,11,98,22,1200,7,24])}`;
[...Array(5)].forEach( v => {
console.log( `This is just a test ${
randomValue([3,2,7,9,112,18,37,12])} / this is another test ${
randomValue([21,2,11,98,22,1200,7,24])}`);
});
//console.log(testing);