如果我有像
这样的字符串var a = '<?xml version="1.0" encoding="Windows-1251"?> .. encoding="utf-8"';
如何使用regexp仅提取编码属性仅在xml标记内首次出现的值? 所以结果将是
Windows-1251
答案 0 :(得分:2)
如果您真的想使用正则表达式,那么您可以使用
var val = a.match(/<\?xml[^>]+\s+encoding="([^"]*)"/)[1];
请注意,通常,解析字符串(尤其是在浏览器中)是最简单的解决方案。
因为如果你想要考虑所有情况,例如你在属性值末尾有encoding=
的可能性,那么它开始变得讨厌:
var val = a.match(/<\?xml(\s+[^>="]+="[^"]+")*\s+encoding="([^"]*)"/)[1];
请注意,如果您不确定该属性是否存在,则应在索引1处获取该元素之前检查返回的数组是否为空。