我有一个要转换的网址。我是这样的
JS:
var original_url;
var modified_url;
original_url = 'data/3458/3458-18-000003-index.html';
modified_url = original_url.replace( /(\d+-\d+-\d+-index.html)/, match => match.replace( /\D/g, '' ) + '/' + match.replace( '-index.html', '.txt' ) );
console.log(original_url);
console.log(modified_url);
结果是:
控制台:
/data/3458/3458-18-000003-index.html
/data/3458/345818000003/3458-18-000003.txt
现在我还想从中获得部分价值。因此理想的结果应该是:
控制台:
/data/3458/3458-18-000003-index.html
/data/3458/345818000003/3458-18-000003.txt
345818000003
如何获得此附加值?
这里是一个小提琴:https://jsfiddle.net/jh7195ao/2/
答案 0 :(得分:3)
您可以使用
var original_url;
var modified_url;
var add_value;
original_url = '/data/3458/3458-18-000003-index.html'; // '$2$3$4/$1.txt'
modified_url = original_url.replace(/((\d+)-(\d+)-(\d+))-index\.html/, function ($0,$1,$2,$3,$4) {
add_value = $2+$3+$4;
return $2+$3+$4+'/'+$1+'.txt';
});
console.log(original_url); // /data/3458/3458-18-000003-index.html
console.log(modified_url); // /data/3458/345818000003/3458-18-000003.txt
console.log(add_value); // 345818000003
请注意,我在模式中添加了更多捕获组,以便稍后可以在回调方法中访问这些部分:
((\d+)-(\d+)-(\d+))
-第1组($1
,以便以后删除其他替换)
(\d+)
-第2组($2
):一位或多位数字-
-连字符(\d+)
-第3组($3
):一位或多位数字-
-连字符(\d+)
-第4组($4
):一位或多位数字-index\.html
--index.html
子字符串(请注意转义的.
与文字点匹配)。