关于获取字符串中的一段字符串的问题?

<xml xmlns="http://www.w3.org/1999/xhtml">
  <block type="variables_get" id="nLf_BhSsE?miY*(Kqsak" x="237" y="65">
    <field name="NAME">qqqqq</field>
  </block>
</xml>

请问如何获取这段字符串中的"qqqqq"?
万分感谢!

阅读 3.2k
4 个回答

咋一看 感觉似曾相似的问题,原来昨天回答过类似

其实不用正则,用dom操作感觉挺好的。
正则的话,老样子,就是要识别字符串 <field name="NAME">qqqqq</field>里的标签包裹内容

var t = `<xml xmlns="http://www.w3.org/1999/xhtml">
  <block type="variables_get" id="nLf_BhSsE?miY*(Kqsak" x="237" y="65">
    <field name="NAME">qqqqq</field>
  </block>
</xml>`
var res = t.match(/<field\s+name\s*="[^"]*"[^>]*>(.*)<\/field>/);
console.log(res&&res[1])

我正则也不是很熟,感觉这正则应该能再优化吧.

我简单列一下细节点:

主要是,开始标签的正则 <field\s+name\s*="[^"]*"[^>]*> 里面我考虑到可能name后面还有空格,以及name属性后可能还有属性,所以再加个[^>]*来匹配非标签结束符>

var span = document.createElement("span");
span.innerHTML = `<xml xmlns="http://www.w3.org/1999/xhtml">
  <block type="variables_get" id="nLf_BhSsE?miY*(Kqsak" x="237" y="65">
    <field name="NAME">qqqqq</field>
  </block>
</xml>`;
var field= span.getElementsByTagName('field')[0];
var text = field.innerHTML;
    var Cts ="<xml xmlns='http://www.w3''.org/1999/xhtml'><block type='variables_get' id='nLf_BhSsE?miY*(Kqsak' x='237' y='65'><field name='NAME'>qqqqq</field></block></xml>";
    
    alert(Cts.substr(a,b))
    //a是字符串开始的索引
    //b是字符串结束的索引
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题