前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用正则的先行断言和后行断言来排版你的文字

使用正则的先行断言和后行断言来排版你的文字

作者头像
seth-shi
发布2023-12-18 14:44:36
970
发布2023-12-18 14:44:36
举报
文章被收录于专栏:seth-shi的专栏seth-shi的专栏

如我有以下一串字符:

代码语言:javascript
复制
let str = '为中华\n\n只崛aaa起\n而读书\n     我是123中国1111人';

想要的效果

  • 每个换行之后自动缩进,等于添加四个空格
  • 所有数字和其它字符的间隔有空格
  • 所有字母和其它字符的间隔有空格
  • 重复排版不会导致排班错乱

代码如下:

代码语言:javascript
复制
// 先行断言后面不会出现 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));

PS: 有梦记的自动格式化文本正式来源于此功能

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-01-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 想要的效果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档