我有一个下面显示的正则表达式和一个while循环来迭代数据,但正则表达式在第一次匹配后停止,我希望它继续,直到找不到更多。
我有全局和多线设置。有没有人有任何想法?我不知所措!
此bin http://jsbin.com/manej/8/edit?js,console,output说明了以下代码的行为,该代码将首次返回Filename Last Time。任何帮助都会受到大力赞赏!
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 :: 938c287eb522359b600f74bb3140bb64生成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 :: a109662fad39b9a9ada2d8d5968c55ed生成2014-05-22T10:39:09.000000 + 01:00 时间2014-05-22T10:39:33.908891 + 01:00文件名S140522DSS10003.xml :: 0a15d6558032cdfdd3cab2ca4a723694生成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
答案 0 :(得分:2)
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;
答案 1 :(得分:1)
使用while循环之外的返回
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;