【问题标题】:regex lazy repeat [duplicate]正则表达式延迟重复
【发布时间】:2018-10-27 04:33:00
【问题描述】:

我正在尝试将「.file extension,」替换为「,」

「1805171004310.jpg,1805171004311.png,1805171004312.jpg,」变成「1805171004310,1805171004311,1805171004312,」

我怎样才能让它变得懒惰并重复? https://jsfiddle.net/jj9tvmku/

dataArr = new Array();
dataArr[1] = '1805171004310.jpg,1805171004311.png,1805171004312.jpg,';

fileNameWithoutExt = dataArr[1].replace('/(\.(.*?),)/', ',');

$('#msg').val(fileNameWithoutExt);

https://regex101.com/r/nftHNy/3

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    只需使用全局标志g。

    你的正则表达式,实际上不是一个正则表达式,它是一个字符串。删除它周围的单引号:/(\.(.*?),)/g,您可以删除所有捕获组,因为这里不需要:/\..*?,/g

    const dataArr = new Array();
    dataArr[1] = '1805171004310.jpg,1805171004311.png,1805171004312.jpg,';
    
    const fileNameWithoutExt = dataArr[1].replace(/\..*?,/g, ',');
    console.log(fileNameWithoutExt);
    // or an array of filenames
    console.log(fileNameWithoutExt.split(',').filter(Boolean));

    如果您想要单独的文件名,请使用.split(',').filter(Boolean)

    【讨论】:

    • 那个正则表达式组有什么意义? /\..*?,/g
    • 感谢您拯救了我的一天。
    猜你喜欢
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多