正则表达式突出显示无效令牌

时间:2015-06-09 20:47:06

标签: regex regex-negation

您有一个字段,用户可以输入一组包含有限令牌的字符串,例如{token1}{token2}。令牌是花括号之间的字符串,不允许使用空格。

当用户输入任何未知/无效令牌时,我希望用regex检查用户的条目以使其无效。请注意,用户也不能输入令牌。

有效条目:

  • qwert yuiop
  • qwert{token1}yuiop
  • qwert{token1}{token2}yuiop
  • qwert {token1} {token2} yuiop

无效的条目:

  • qwert {badtoken} yuiop
  • qwert { badtoken} yuiop
  • qwert {badtoken } yuiop
  • qwert { token1} yuiop
  • qwert {token1 } yuiop
  • qwert { token1 } yuiop
  • qwert {badtoken} {token1} yuiop

意向性,给用户的信息会说:

  

该条目包含未知令牌。只允许{token1}和{token2}。

1 个答案:

答案 0 :(得分:1)

我认为这是你正在寻找的东西:

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

大多数人在这样的情况下没有想到的部分是在负向前瞻中包含结束括号(\}),以防止匹配{token1 }或{{1 }}

当然,这并没有检测到大括号丢失的令牌,例如{token2xxxx}{token1。那将会复杂得多。

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

更新:根据评论中的请求,这里是一个拼写版本(正如您将用于不能轻易压缩的令牌名称):

token2}

...以及更新的 demo