【问题标题】:javascript regex match tag like htmljavascript 正则表达式匹配标签,如 html
【发布时间】:2014-08-29 10:33:56
【问题描述】:

因为,我对正则表达式没有太多经验。就我而言,我想在下面的字符串中获取 <text> 标签和 <music> 标签中的内容。结果也将是 2 个数组:

要匹配的字符串:

"<text>Chủ nhật, ngày 24 tháng 5 năm 1863, giáo sư Lidenbrockenbrock vội vã trở về ngôi nhà của ông ở số 19 đường Konigstasse, nằm trong khu phố cổ kính nhất ở thành phố Hambourg.</text><music>abc.wav</music>"

结果:

["Chủ nhật, ngày 24 tháng 5 năm 1863, giáo sư Lidenbrockenbrock vội vã trở về ngôi nhà của ông ở số 19 đường Konigstasse, nằm trong khu phố cổ kính nhất ở thành phố Hambourg."]

[“abc.wav”]

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    因为,@taggon 中的代码在字符串有换行符吸为\r\n 时不起作用。所以我在它前面加了一行。会好的:

    STRING_TO_MATCH = STRING_TO_MATCH.replace(/(?:\r\n|\r|\n)/g, '<br/>');
    
    /**
     * If <music> always follows <text>
     */
    var matches = /<text>(.+?)<\/text>\s*<music>(.+?)</music>/.exec(STRING_TO_MATCH);
    var text, music;
    if (matches) {
        text = matches[0]; // <text> content
        music = matches[1]; // <music> content
    }
    
    /**
     * Otherwise 
     */
    var text = /<text>(.+?)<\/text>/.exec(STRING_TO_MATCH);
    var music = /<music>(.+?)<\/music>/.exec(STRING_TO_MATCH);
    if (text) text = text[0];
    if (music) music = music[0];
    

    【讨论】:

      【解决方案2】:

      结果中的数组是必需的吗?在下面的代码中,你可以得到你想要的除了数组之外的内容。如果你想要数组,只需包装内容。

      /**
       * If <music> always follows <text>
       */
      var matches = /<text>([\s\S]+?)<\/text>\s*<music>([\s\S]+?)<\/music>/.exec(STRING_TO_MATCH);
      var text, music;
      if (matches) {
          text = matches[0]; // <text> content
          music = matches[1]; // <music> content
      }
      
      /**
       * Otherwise 
       */
      var text = /<text>([\s\S]+?)<\/text>/.exec(STRING_TO_MATCH);
      var music = /<music>([\s\S]+?)<\/music>/.exec(STRING_TO_MATCH);
      if (text) text = text[0];
      if (music) music = music[0];
      

      【讨论】:

      • 非常感谢您回答我的问题。但是当字符串有换行符\r\n时它不起作用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多