1

我正在写博客并使用降价语言来呈现输入的内容。现在,我尝试过滤 HTML 标记的代码块(标有三个反引号)之外的所有内容,并希望替换它们。
但是,我当前的 RegExp 模式无法正常工作,并且考虑到我是 RegExp 的新手,我找不到我的问题,这是我使用的模式:

/```(.*)```/g

这很好用,如果我想剥离每个匹配项,但是当我想分割文本时,根据这个模式,JavaScript 只是在寻找三个反引号而不是整个模式。

编辑:
这是我的代码,我使用该模式来拆分从文本字段中获取的文本:

function preformatInput(text){
    let noCode = text.split(/```(.*)```/g);
    let indizes = [];
    let length = [];
    for(let i = 0; i<noCode.length; i++){
        // indizes.push(text.find(i));
        if(i>0)indizes.push(text.indexOf(noCode[i], text.indexOf(noCode[i-1])));
        else indizes.push(text.indexOf(noCode[i]));

        length.push(noCode[i].length);
    }
    for(let i = 0; i<noCode.length; i++){
        noCode[i] = stripHTML(noCode[i]);
    }
    console.log(indizes);
    console.log(length);
}
4

2 回答 2

1

/```[^```]+```/g不起作用,表达式的工作方式/```[^`]+```/g与禁止 single/double '`'s 相同。

采用

/```[\s\S]*?```/g

解释

--------------------------------------------------------------------------------
  ```                      '```'
--------------------------------------------------------------------------------
  [\s\S]*?                 any character of: whitespace (\n, \r, \t,
                           \f, and " "), non-whitespace (all but \n,
                           \r, \t, \f, and " ") (0 or more times
                           (matching the least amount possible))
--------------------------------------------------------------------------------
  ```                      '```'
于 2021-05-17T21:24:52.457 回答
0

解决了问题:
我将我的 RegExp 模式更改为以下内容:/```[^```]+```/g并且它有效。

于 2021-05-17T18:37:03.430 回答