匹配字符串,除非它在方括号内

时间:2013-01-04 17:13:50

标签: javascript regex lookahead

我正在尝试使用我发现的JQuery zen编码插件来适应我自己的用途。我遇到的一个问题是代码中的错误,如

a[href="google.com"]

将扩展为

 <a href="google.com" class="com"</a>

代码使用的正则表达式是:

/(\.[\w-]+)/gi

我已经修改了一下,看看它前面是否有偶数个括号。

/(\.[\w-]+)(?=([^\]]*\][^\]]*\])*[^\]]*$)/gi

我使用了正则表达式测试程序,它似乎有效,但是当使用javascript .match()时,它会返回“.com”作为上述字符串中的匹配项。

以下回复已解决了相关错误但已创建新错误。现在:

a.class[href="google.com"]

未解析为

http://jsfiddle.net/sA9sQ/

修改 我接受了下面的答案,因为它让我得到了我需要去的地方。最终的正则表达式是/(\.[\w-]+)(?=([^\]]*\][^\]]*\])*[^\]]*\.[\w-]+)/gi

1 个答案:

答案 0 :(得分:1)

尝试将前瞻移动到正则表达式的前面,如下所示:

/(?=([^\]]*\][^\]]*\])*[^\]]*$)(\.[\w-]+)/gi