[英]Regular expression to insert dash into numbers after 3 and 4 digits
我正在尝试将破折号插入数字,但对我来说太难了......我想要做的是在 3 位和 4 位数字后插入破折号,例如,
将123123412345
替换为123-1234-12345
。
附加条件是我在input
元素中替换它。 所以我替换每个输入事件的数字,即,我需要替换
1
对1
12
到12
123
至123
1231
转123-1
...
1231234
转123-1234
12312341
转123-1234-1
...
123123412345
至123-1234-12345
我怎样才能使用正则表达式做到这一点?
你可以试试这个正则表达式:
(?<=^\d{3}|^\d{7})(?=\d)
-
检查证明
const list = [ 1, 12, 123, 1231, 1231234, 12312341, 123123412345 ]; const regex = /(?<=^\\d{3}|^\\d{7})(?=\\d)/g; const result = list.map(e => regex[Symbol.replace](e, '-')); console.log(result);
假设它只需要拆分前 3 个接下来的 4 个数字,可以通过以下正则表达式替换来完成
str.replace(/((?<!\d)\d{3}(?!\b)|(?<=^\d{3})\d{4}(?!\b))/g, '$1-')
输入字符串必须是所有数字
document.getElementById('input').addEventListener('keyup', (e) => { e.target.value = e.target.value.split('-').join('').replace(/((?<!\\d)\\d{3}(?!\\b)|(?<=^\\d{3})\\d{4}(?!\\b))/g, '$1-'); }); ['1', '12', '123', '1231', '12312', '123123', '1231234', '12312341', '123123412', '1231234123', '12312341234', '123123412345'] .forEach(t => console.log(t.replace(/((?<!\\d)\\d{3}(?!\\b)|(?<=^\\d{3})\\d{4}(?!\\b))/g, '$1-')));
<input id="input" type="text" size="20">
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.