示例字符串:
2222
333333
12345
111
123456789
12345678
预期结果:
2@222
333@333
12@345
111
123@456@789
12@345@678
即'@'
应插入到字符串末尾的第 4、8、12 等最后位置。
我相信这可以使用 JavaScript 中的替换和其他一些方法来完成。
为了验证输出字符串,我制作了正则表达式:
^(\d{1,3})(\.\d{3})*?$
最佳答案
您可以使用此正则表达式:
/(\d)(\d{3})$/
这将匹配第一个数字 \d
并将其分组,并将最后三个 \d{3}
分组,然后将其分组到自己的组中。使用匹配的组,您可以使用 $1
和 $2
在替换字符串中引用它们。
参见下面的示例:
const transform = str => str.replace(/(\d)(\d{3})$/, '$1@$2');
console.log(transform("2222")); // 2@222
console.log(transform("333333")); // 333@333
console.log(transform("12345")); // 12@345
console.log(transform("111")); // 111
对于大小为 N 的较大字符串,您可以使用其他方法,例如 .match()
并反转字符串,如下所示:
const reverse = str => Array.from(str).reverse().join('');
const transform = str => {
return reverse(reverse(str).match(/(\d{1,3})/g).join('@'));
}
console.log(transform("2222")); // 2@222
console.log(transform("333333")); // 333@333
console.log(transform("12345")); // 12@345
console.log(transform("111")); // 111
console.log(transform("123456789")); // 123@456@789
console.log(transform("12345678")); // 12@345@678
关于javascript - 如何使用 javascript 将给定字符串更改为正则表达式修改的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59965803/