我需要编写一个正则表达式,告诉我我正在处理的任何后端框架是否抛出错误,然后将这些错误存储在数组中以便在需要时进行检索。Javascript正则表达式来检查错误标签
问题是,他们对错误使用不同的标签。标签如下:
{{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
的左括号关闭。这可能吗?
我想修复后端处理,使错误统一。如果没有,我想你可以通过'(?:\ {\ {| << | \ | \ [| | <\ {:) error(?:\} \} | >> | \] \] \}>)'。 – chris85