如何删除文件名开头的数字?

时间:2016-02-18 08:11:22

标签: regex

我想删除文件名开头的数字。例如:

atoms/01-headings/01-heading-level-01.html

atoms/headings/heading-level-01.html

我已经构建了这个正则表达式/(^\d+|(?=\/)\/\d+)[\-\.]/img,但似乎正面的前瞻(?=\/)也消耗了/

如何不消费?

这是我的测试:https://regex101.com/r/hK0rZ2/5

2 个答案:

答案 0 :(得分:1)

使用此正则表达式进行搜索:

/(^|\/)\d+[.-]?/img

并替换为:

"$1"

捕获的组#1 (^|\/)匹配起始位置或/后跟一个或多个数字以及可选的连字符OR DOT。替换我们$1作为捕获的组#1的后向参考。

Updated RegEx Demo

答案 1 :(得分:0)

使用斜杠的前瞻不是\/中的\/\d+

您可以使用

/(?:^|(\/))\d+[-.]/igm

并替换为$1

请参阅regex demo

正则表达式匹配:

  • (?:^|(\/)) - 行的开头(^)或/符号,/捕获到第1组(我们稍后会使用$1反向引用来恢复它
  • \d+ - 一个或多个数字
  • [-.] - 字面上的-.(因为它是一个字符类,连字符在它的开头,不需要转义)。

var re = /(?:^|(\/))\d+[-.]/img; 
var str = '01-heading-level-01.html\n02-heading-level-02.html\natoms/01-headings/01-heading-level-01.html\natoms/01-headings/01-heading-level-1.html\natoms/01-headings/02-heading-level-02.html\natoms/01-headings/02-heading-level-2.html\natoms/01-headings/01-heading-level-01/01-headings-level-01-red.html';
var result = str.replace(re, '$1');
document.body.innerHTML = result.replace(/\n/g, "<br/>");