[英]How to change given string to regex modified string using javascript
示例字符串:
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
var test = [ '111', '2222', '333333', '12345', '123456789', '1234567890123456' ]; console.log(test.map(function (a) { return a.replace(/(?=(?:\\B\\d{3})+$)/g, '@'); }));
你可以匹配所有的数字。 在替换中,使用正向先行在右侧的每三个数字后插入一个@
。
(?=(?:\B\d{3})+$)
(?=
正向前瞻,右边是
(?:\\B\\d{3})+
重复 1+ 次非字边界和 3 个数字$
断言字符串结束)
关闭前瞻 const regex = /^\\d+$/; ["2222", "333333", "12345", "111", "123456789", "12345678" ].forEach(s => console.log( s.replace(/(?=(?:\\B\\d{3})+$)/g, "@") ));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.