Javascript 如何在不同场景中的特殊字符之间匹配文本

Javascript 如何在不同场景中的特殊字符之间匹配文本,javascript,regex,Javascript,Regex,我有不同场景中的字符串。其思想是在“代码”>< < /代码>的句子中间取正文。如果只有一个|,则将取第一部分 示例: 无用信息| |基本信息| |高级信息| |超级信息| |无信息 应匹配:基本信息和高级信息和超级信息 无用信息| |基本信息| |高级信息| |无信息 应匹配:基本信息和高级信息 无用信息| |基本信息| |无信息 应匹配:基本信息 无用信息| |没有信息 应匹配:Usless信息 我试过: ||[^||]*||[^||]* 还有这个: ([^||]*)(?=||) 但并非在

我有不同场景中的字符串。其思想是在“代码”>< < /代码>的句子中间取正文。如果只有一个
|
,则将取第一部分

示例:

无用信息| |基本信息| |高级信息| |超级信息| |无信息

应匹配:基本信息高级信息超级信息

无用信息| |基本信息| |高级信息| |无信息

应匹配:基本信息高级信息

无用信息| |基本信息| |无信息

应匹配:基本信息

无用信息| |没有信息

应匹配:Usless信息

我试过:

||[^||]*||[^||]*
还有这个:

([^||]*)(?=||)

但并非在所有场景中都像预期的那样工作。可以只使用一个
regex
表达式执行此操作?

您可以在不使用regex的情况下,在
|

const字符串=[
“无用信息| |基本信息| |高级信息| |超级信息| |无信息”,
“无用信息| |基本信息| |高级信息| |无信息”,
“无用信息| |基本信息| |无信息”,
“无用信息| |无信息”
];
strings.forEach((s)=>{
让零件=s.拆分(“| |”);
让结果=[];
如果(parts.length==2){
结果:推送(零件[0]);
}
如果(parts.length==3){
结果:推动(第[1]部分);
}
如果(零件长度>3){
parts.shift();
parts.pop();
结果=零件;
}
控制台日志(结果);

});可能类似于
^((?:(?!\\\\\{2})。*)\\{2}(?。*\\\\{2})\\\\\{2}\s*(*?)(=\s*\\\\{2})
,请参见。是的,这很有效。如果你把它写成一个答案,我会接受的。而且,如果你能解释一下,可能会更好:)你应该用
|
分开,这样更简单。