gpt4 book ai didi

用于检查错误标签的 JavaScript 正则表达式

转载 作者:行者123 更新时间:2023-12-01 03:55:53 27 4
gpt4 key购买 nike

我需要编写一个正则表达式,它会告诉我正在使用的任何后端框架是否抛出错误,然后将这些错误存储在数组中以便在必要时进行检索。

问题是,他们对错误使用不同的标签。标签如下:

{{error}} , <<error>> , [[error]] ,和<{:error:}>

通常(但并非总是如此)后面会出现一组大括号。大括号内将是一个字符串;错误的解释,或包含有关错误的更多信息的 JSON 字符串,如下所示:

<<error>> { Something has gone terribly wrong. }
<<error>> {
{"some":"json"}
}
<{:error:}> { What went wrong? }

到目前为止,它正在对每个标签进行特定检查,效率相当低,如下所示:

if ( string.indexOf('<<error>>') >= 0 )
// Remove << and >>
if ( string.indexOf('[[error]]') >= 0 )
// Remove [[ and ]]
// So forth...

然后,我留下这样的字符串:

error { Some description. }

error {
{"some":"json"}
}

我需要一个正则表达式来提取括号之间的内容。这是我编写的正则表达式,但它在很多方面都存在缺陷:

string.match('/error\s?\{([^\}]+)\}/gi');

正如我所说,这个过程效率非常低并且存在问题。

首先,它不允许使用大括号 {}之后error是可选的。它们应该是可选的。

其次,它不允许 JSON 作为字符集 [^}]当 JSON 呈现时不匹配它正在关闭 } 。所以我需要某种方法来匹配集合中的所有字符,直到 error 的左括号为止关闭了。这可能吗?

最佳答案

鉴于我的第一个答案的评论,我将使用此正则表达式作为替换,将数据转换为单行 json,正则表达式还会删除评论。它会删除未以正确标记的错误开头的换行符。多行必须打开。

  • (?:\/[\s\S*]*?\*\/|\/\/.*$|\s*^\s*(?!<<|{{|\[\[|<{:))) (demo)
  • (?:\s*^\s*(?!<<|{{|\[\[|<{:))如果永远没有要删除的评论

然后提取错误信息,在重新格式化的字符串上,使用此正则表达式进行匹配。

({{error}}|<<error>>|\[\[error\]\]|<{:error:}>)[ \t]*(?:(.*)}\s*$)? demo

<小时/>

我将保留另一个答案不变,因为我认为它基本上解释了一个人在这样做时可能遇到的问题。

关于用于检查错误标签的 JavaScript 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42676230/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com