Javascript 正则表达式:搜索用特定字符或字符串包裹的所有内容
Javascript RegExp: Searching for everything wrapped with a spezific char or string
我正在写博客,输入的内容使用markdown语言渲染。现在,我尝试为 HTML-Tags 过滤代码块(标有三重反引号)之外的所有内容,并希望替换它们。
但是,我当前的 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);
}
解决了问题:
我将 RegExp 模式更改为以下内容:/```[^```]+```/g
并且有效。
/```[^```]+```/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))
--------------------------------------------------------------------------------
``` '```'
我正在写博客,输入的内容使用markdown语言渲染。现在,我尝试为 HTML-Tags 过滤代码块(标有三重反引号)之外的所有内容,并希望替换它们。
但是,我当前的 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);
}
解决了问题:
我将 RegExp 模式更改为以下内容:/```[^```]+```/g
并且有效。
/```[^```]+```/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))
--------------------------------------------------------------------------------
``` '```'