V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
DavidNineRoc
V2EX  ›  问与答

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

  •  
  •   DavidNineRoc · 2020-01-19 14:02:11 +08:00 · 551 次点击
    这是一个创建于 1530 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我有如下一段文字

    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');
    
    
    第 1 条附言  ·  2020-01-19 14:37:41 +08:00

    已经解决使用后行断言

    str = str.replace(/(?<!\s|\d)(\d+)/g, ' $1');
    
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1064 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 19:01 · PVG 03:01 · LAX 12:01 · JFK 15:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.