javascript - 如何使用 javascript 将给定字符串更改为正则表达式修改的字符串

标签 javascript regex replace

示例字符串:

 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/

相关文章:

javascript - 使用 jquery 将数据与 ajax 响应进行比较

Java 正则表达式 : word ending in 's' except specific words

Python Regex - 如何获取匹配的位置和值

python - 用python中字符串中的另一个单词替换单词

javascript - 将空格更改为逗号,直到全部更改

javascript - 为什么断点后改变的值不显示?第2部分

javascript - 如何使用复选框并仅使用该复选框切换 Accordion 菜单?

javascript - Element.prop ('scrollHeight' ) 为 Angular.js 中的不同列表项返回相同的值

regex - 谷歌表格正则提取每个单词的第一个字母

javascript - 使用 JSON.stringify() 的替换数组包含所有对象属性