我正在用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]);
}
有人知道我做错了吗?
答案 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]