匹配没有至少两个分号的开括号和右括号

时间:2016-04-29 12:11:25

标签: javascript regex

我有这样的文字:

  

[UNIX; common>要扩展通配名称中的特殊字符,或   这样做的行为(该行动也称为[[b; #fff;] globbing])。   文件名通配符的Unix约定已经足够了   普遍存在许多黑客用书面英语使用其中一些,   特别是关于技术主题的电子邮件或新闻。那些通常   遇到的包括以下内容:一些例子:[[i ;;]他说他的   名字是[KC] arl](表达歧义)。 [[i ;;]我不读   talk.politics。*](任何talk.politics子组   [[蒲式耳; #FFF ;;行话]的Usenet])。其他例子在条目下给出   for [[bu; #fff ;; jargon] X]。请注意,glob模式类似,但不是   与[[bu; #fff ;; jargon] regexp] s.Historical中使用的相同   注意:术语用法来自glob,子程序的名称   在古老的Bourne版本的Unix中扩展了通配符   外壳

我希望将[KC][Unix; common]替换为\[KC\]\[Unix; common\]

我试过这个正则表达式:

/\[(?![^;]*;[^;]*;[^\]]*\])[^\]]+\]/g

但它不起作用。

1 个答案:

答案 0 :(得分:2)

只是一个小小的变化。您还需要在否定的char类中包含\];,因为[^;]也应该与]匹配,因此它应该超过结束括号]

\[((?![^;\]]*;[^;\]]*;[^\]]*\])[^\]]+)\]

DEMO