Javascript 使用regexp提取第一个属性值
如果我有像Javascript 使用regexp提取第一个属性值,javascript,Javascript,如果我有像 var a = '<?xml version="1.0" encoding="Windows-1251"?> .. encoding="utf-8"'; ?如果您真的想使用正则表达式,正如您的问题一样,您可以使用 var val = a.match(/<\?xml[^>]+\s+encoding="([^"]*)"/)[1]; 请注意,如果您不确定该属性是否存在,那么在获取索引1处的元素之前,应该检查返回的数组是否为null。我强烈建议使用解析器。Java
var a = '<?xml version="1.0" encoding="Windows-1251"?> .. encoding="utf-8"';
?如果您真的想使用正则表达式,正如您的问题一样,您可以使用
var val = a.match(/<\?xml[^>]+\s+encoding="([^"]*)"/)[1];
请注意,如果您不确定该属性是否存在,那么在获取索引1处的元素之前,应该检查返回的数组是否为null。我强烈建议使用解析器。JavaScript拥有相当强大的xml解析功能。我使用cheerio解析器,它似乎无法处理以?开头的标记?。不接受任何其他解析器,regexp是唯一的方法。
/\sencoding\=\“(.*?\”/
强烈建议不要对stringtforward解决方案使用regex for xml。如果在编码之前我有一些其他属性的值,那么它将不起作用,因此我必须指定数组的其他元素数。您的建议可能与无效值匹配,例如,
@dystroy无论如何,我宁愿远离它
var val = a.match(/<\?xml[^>]+\s+encoding="([^"]*)"/)[1];
var val = a.match(/<\?xml(\s+[^>="]+="[^"]+")*\s+encoding="([^"]*)"/)[1];