Javascript 正则表达式在循环中的第一个匹配处停止

Javascript 正则表达式在循环中的第一个匹配处停止,javascript,arrays,regex,loops,exec,Javascript,Arrays,Regex,Loops,Exec,我有一个如下所示的正则表达式和一个while循环来迭代数据,但是正则表达式在第一次匹配后停止,我希望它继续,直到找不到更多的正则表达式为止 我有全局和多行集。有人有什么想法吗?我不知所措 此bin演示了以下代码的行为,这些代码将在上次(第一次)返回文件名。任何帮助都将不胜感激 var regex = new RegExp( '(\\d{2}:\\d{2}:\\d{2}).*?([0-9a-z]+\\.xml).*?(\\d{2}:\\d{2}:\\d{2})', 'gmi' ), out = [

我有一个如下所示的正则表达式和一个while循环来迭代数据,但是正则表达式在第一次匹配后停止,我希望它继续,直到找不到更多的正则表达式为止

我有全局和多行集。有人有什么想法吗?我不知所措

此bin演示了以下代码的行为,这些代码将在上次(第一次)返回文件名。任何帮助都将不胜感激

var regex = new RegExp( '(\\d{2}:\\d{2}:\\d{2}).*?([0-9a-z]+\\.xml).*?(\\d{2}:\\d{2}:\\d{2})', 'gmi' ), out = [];

      while ( ( match = regex.exec( data ) ) !== null ) {

        out.push(match[2], match[3], match[1]);  
          return out;  
      }
var数据是:-

时间2014-05-22T10:39:04.890117+01:00文件名S140522DSS10002.xml::938C287EB522359B600F74B3140BB64生成时间2014-05-22T10:38:46.000000+01:00 时间2014-05-22T10:39:04.890117+01:00文件名S140522DSS10001.xml::d525814afc7f9c92e7709d9a2ec46803生成时间2014-05-22T10:38:31.000000+01:00 时间2014-05-22T10:39:33.908891+01:00文件名S140522DSS10005.xml::54df47de51346319d5064ed5c380ace1生成时间2014-05-22T10:39:11.000000+01:00 时间2014-05-22T10:39:33.908891+01:00文件名S140522DSS10004.xml::A109662FAD39B9ADA2D8D5968C55ED生成时间2014-05-22T10:39:09.000000+01:00 时间2014-05-22T10:39:33.908891+01:00文件名S140522DSS10003.xml::0A15D658032CDFD3CAB2CA4A723694生成时间2014-05-22T10:39:03.000000+01:00 时间2014-05-22T10:40:03.896013+01:00文件名R140522DSS10001.xml::ffd98e7e99625a957370f4ed03de8612生成时间2014-05-22T10:39:55.000000+01:00 时间2014-05-22T10:42:33.896617+01:00文件名S140522DDG10001.xml::d7010a49dd39731ef05e1452314a84d1生成时间2014-05-22T10:42:21.000000+01:00 时间2014-05-22T10:43:03.899967+01:00文件名S140522DDG10002.xml::7297c9e66cd418eabee94cba8a464df7生成时间2014-05-22T10:42:36.000000+01:00 时间2014-05-22T10:43:03.899967+01:00文件名S140522DDG10003.xml::e4e1071794e586bf10350dcb073d0662生成时间2014-05-22T10:42:53.000000+01:00
时间2014-05-22T10:43:34.196675+01:00文件名S140522DDG10004.xml::b520bc560e0d117520620d782c0e9ce0生成的时间2014-05-22T10:42:59.000000+01:00返回语句应该在循环之外:

var regex = new RegExp( '(\\d{2}:\\d{2}:\\d{2}).*?([0-9a-z]+\\.xml).*?(\\d{2}:\\d{2}:\\d{2})', 'gmi' ), out = [];

while ( ( match = regex.exec( data ) ) !== null ) {
    out.push(match[2], match[3], match[1]);  
}

return out;  

return
语句应该在循环之外:

var regex = new RegExp( '(\\d{2}:\\d{2}:\\d{2}).*?([0-9a-z]+\\.xml).*?(\\d{2}:\\d{2}:\\d{2})', 'gmi' ), out = [];

while ( ( match = regex.exec( data ) ) !== null ) {
    out.push(match[2], match[3], match[1]);  
}

return out;  

return
语句应该在循环之外:

var regex = new RegExp( '(\\d{2}:\\d{2}:\\d{2}).*?([0-9a-z]+\\.xml).*?(\\d{2}:\\d{2}:\\d{2})', 'gmi' ), out = [];

while ( ( match = regex.exec( data ) ) !== null ) {
    out.push(match[2], match[3], match[1]);  
}

return out;  

return
语句应该在循环之外:

var regex = new RegExp( '(\\d{2}:\\d{2}:\\d{2}).*?([0-9a-z]+\\.xml).*?(\\d{2}:\\d{2}:\\d{2})', 'gmi' ), out = [];

while ( ( match = regex.exec( data ) ) !== null ) {
    out.push(match[2], match[3], match[1]);  
}

return out;  

在while循环外使用return

var regex = new RegExp( '(\\d{2}:\\d{2}:\\d{2}).*?([0-9a-z]+\\.xml).*?(\\d{2}:\\d{2}:\\d{2})', 'gmi' ), out = [];

      while ( ( match = regex.exec( data ) ) !== null ) {

        out.push(match[2], match[3], match[1]);  

      }
return out;  

在while循环外使用return

var regex = new RegExp( '(\\d{2}:\\d{2}:\\d{2}).*?([0-9a-z]+\\.xml).*?(\\d{2}:\\d{2}:\\d{2})', 'gmi' ), out = [];

      while ( ( match = regex.exec( data ) ) !== null ) {

        out.push(match[2], match[3], match[1]);  

      }
return out;  

在while循环外使用return

var regex = new RegExp( '(\\d{2}:\\d{2}:\\d{2}).*?([0-9a-z]+\\.xml).*?(\\d{2}:\\d{2}:\\d{2})', 'gmi' ), out = [];

      while ( ( match = regex.exec( data ) ) !== null ) {

        out.push(match[2], match[3], match[1]);  

      }
return out;  

在while循环外使用return

var regex = new RegExp( '(\\d{2}:\\d{2}:\\d{2}).*?([0-9a-z]+\\.xml).*?(\\d{2}:\\d{2}:\\d{2})', 'gmi' ), out = [];

      while ( ( match = regex.exec( data ) ) !== null ) {

        out.push(match[2], match[3], match[1]);  

      }
return out;  

谢谢你们,我把这两个都标记为答案,因为它们都是相同的,以鼓励新的人加入堆栈。:)谢谢你们,我把这两个都标记为答案,因为它们都是相同的,以鼓励新的人加入堆栈。:)谢谢你们,我把这两个都标记为答案,因为它们都是相同的,以鼓励新的人加入堆栈。:)谢谢你们,我把这两个都标记为答案,因为它们都是相同的,以鼓励新的人加入堆栈。:)