如我有以下一串字符:
1 2 |
let str = '为中华\n\n只崛aaa起\n而读书\n 我是123中国1111人'; |
想要的效果
- 每个换行之后自动缩进,等于添加四个空格
- 所有数字和其它字符的间隔有空格
- 所有字母和其它字符的间隔有空格
- 重复排版不会导致排班错乱
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// 先行断言后面不会出现 4 个空格彩条混 const brReg = /\n(?!\s{4})/g; // 后行断言前面没有空格和数字才替换, 后面的想通 const numPreReg = /(?<!\s|\d)(\d+)/g; const numExtReg = /(\d+)(?!\s|\d)/g; const charPreReg = /(?<!\s|[a-zA-Z])([a-zA-Z]+)/g; const charExtReg = /([a-zA-Z]+)(?!\s|[a-zA-Z])/g; str = str.replace(brReg, '\n '); str = str.replace(charPreReg, ' $1'); str = str.replace(charExtReg, '$1 '); str = str.replace(numPreReg, ' $1'); str = str.replace(numExtReg, '$1 '); // 为中华\n \n 只崛 aaa 起\n 而读书\n 我是 123 中国 1111 人 console.log(JSON.stringify(str)); |