V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
DavidNineRoc
V2EX  ›  问与答

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

  •  
  •   DavidNineRoc · Jan 19, 2020 · 828 views
    This topic created in 2291 days ago, the information mentioned may be changed or developed.

    我有如下一段文字

    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');
    
    
    Supplement 1  ·  Jan 19, 2020

    已经解决使用后行断言

    str = str.replace(/(?<!\s|\d)(\d+)/g, ' $1');
    
    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2612 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 100ms · UTC 16:03 · PVG 00:03 · LAX 09:03 · JFK 12:03
    ♥ Do have faith in what you're doing.