【问题标题】:Replace dependig on the value of the RegEx JS根据 RegEx JS 的值替换
【发布时间】:2017-09-21 10:04:50
【问题描述】:

我有一个/\\.br<[0-9]+>\\/g 形式的正则表达式,我想用正则表达式中 之间指示的新行数替换正文中的它。

例如。输入

Hello \.br<3>\  World!

输出:

Hello


World!

【问题讨论】:

  • 欢迎来到 SO。请参阅How to ask a good question。这不是代码编写服务。
  • 查看String.prototype.replace上的回调。
  • 不是空格数,而是换行数,我想

标签: javascript regex


【解决方案1】:

您的正则表达式 /\\.br&lt;[0-9]+&gt;\\/g 不正确。 . 在正则表达式上下文中的意思是“除换行符之外的任何字符”。因此,您需要转义正则表达式中的点。

/\\\.br<[0-9]+>\\/g
/(\\\.br<([0-9]+)>\\)/g

接下来,根据 T.J. 的建议查看 String.prototype.replace。克劳德,我想到了以下解决方案:

    function replacer(match, p1, p2, offset, string) {
      let result = '';
      for (let i = 0; i < Number(p2); i++) {
        result += '\n';
      }
      return result;
    }
    var newString = String('Hello \\.br<3>\\ World!').replace(/(\\\.br<([0-9]+)>\\)/g, replacer);
    console.log(newString);

请注意,代码中的硬编码字符串包含 2 个\\,因为这是一个转义字符。当您通过某种文本字段从用户那里收到字符串时,输入一个 \ 就足够了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2021-09-05
    • 2021-08-24
    • 1970-01-01
    相关资源
    最近更新 更多