用 JS 正则实现排版文字,先行断言的正则是我写的有问题吗?

2020-01-19 14:02:11 +08:00
 DavidNineRoc

我有如下一段文字

let str = '中华\n\n 崛起\n 只读书\n     我是 123 中国 1111 人,中华 333 人名';
  1. 想要做到\n之后会自动缩进,数字和文字之间自动添加空格隔开。
  2. 是可以多次排版,不会导致格式错乱。

我的代码如下:

// 这行可以
str = str.replace(/\n(?!\s{4})/g, '\n    ');

// 后置添加空格也可以
str = str.replace(/(\d+)(?!\s|\d)/g, '$1 ');

// 唯独前置添加空格,会重复匹配,
# 这样子写匹配不到
str = str.replace(/(?!\s|\d)(\d+)/g, '$1 ');
# 这样子写,会导致匹配多次,前面空格不断增多
str = str.replace(/(?!\s)(\d+)/g, ' $1');

564 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/639144

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX