繁体   English   中英

将破折号插入到 3 位和 4 位数字后的正则表达式

[英]Regular expression to insert dash into numbers after 3 and 4 digits

我正在尝试将破折号插入数字,但对我来说太难了......我想要做的是在 3 位和 4 位数字后插入破折号,例如,

123123412345替换为123-1234-12345

附加条件是我在input元素中替换它。 所以我替换每个输入事件的数字,即,我需要替换

11
1212
123123
1231123-1
...
1231234123-1234
12312341123-1234-1
...
123123412345123-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM