我想删除文件名开头的数字。例如:
atoms/01-headings/01-heading-level-01.html
到
atoms/headings/heading-level-01.html
我已经构建了这个正则表达式/(^\d+|(?=\/)\/\d+)[\-\.]/img
,但似乎正面的前瞻(?=\/)
也消耗了/
。
如何不消费?
答案 0 :(得分:1)
使用此正则表达式进行搜索:
/(^|\/)\d+[.-]?/img
并替换为:
"$1"
捕获的组#1 (^|\/)
匹配起始位置或/
后跟一个或多个数字以及可选的连字符OR DOT。替换我们$1
作为捕获的组#1的后向参考。
答案 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/>");