用于突出显示无效标记的正则表达式

Regex to highlight invalid tokens

您好,有一个字段,用户可以输入带有有限标记集的字符串,例如 {token1}{token2}。 Token 是花括号之间的字符串,不允许有空格。

我想用正则表达式检查用户的输入,以便在用户输入任何 unknown/invalid 令牌时无效。请注意,用户也可以根本不输入令牌。

有效条目:

无效条目:

在意图方面,给用户的消息会说:

The entry contains unknown tokens. Only {token1} and {token2} are allowed.

我想这就是您要找的:

\{(?!token[12]\}).*?\}

大多数人在这种情况下没有想到的部分是在否定前瞻中包含结尾大括号 (\}),以防止匹配 {token1 }{token2xxxx}.

当然,这不会检测缺少大括号的标记,例如 {token1token2}。那会复杂很多。

此正则表达式适用于支持前瞻和不情愿量词的任何风格。这是一个 demo.

更新: 根据评论中的要求,这里有一个拼写版本(因为您将用于不易压缩的令牌名称):

\{(?!(?:token1|token2)\}).*?\}

...以及更新后的 demo.