使用javascript解析短代码

时间:2012-10-27 16:34:40

标签: javascript regex parsing

我正在用javascript解析这样的字符串:

[box style="a" width="b" height="c"]

到目前为止,当我使用http://gskinner.com/RegExr/时,它可以使用这个正则表达式进行解析:

/(?<=\s).+?=".+?"/

然而,当我在javascript中执行此操作时出错:

  

未捕获的SyntaxError:无效的正则表达式:/(?&lt; =。\ s)。+?+。+?“/:   无效的群组

这是代码的一部分:

if (scOpenTag instanceof Array) {
   var params = scOpenTag[0].match(/(?<=\s).+?=".+?"/);                    
   for (var i = 0; i < params.length; i++)
      console.log(params[i]);
}

有人知道我做错了吗?

2 个答案:

答案 0 :(得分:2)

使用简单的正则表达式

[\w-]+="[^"]*"

答案 1 :(得分:1)

JavaScript不支持lookbehind断言; (?<=...)(?<!...)都不起作用。

但是,看起来你的keys / property-names / attribute-names / whatever-those-that的形式为\w+,所以你可以从单词边界断言中获得一些里程{{1} }(与\b(?<!\w)(?=\w)匹配):

(?<=\w)(?!\w)

已编辑添加:就此而言,您可以使用捕获组获取完全当前功能,并使用/\b\w+="[^"]+"/ 代替{{ 1}}:

params[1]