JavaScript-在特定表达式之后仅获取字符串的一部分

时间:2019-01-16 18:19:38

标签: javascript regex

我有以下内容:

var string = 'https://sub.example.com/dir/ https://sub.example.com/dir/v2.5/'
var hostname = 'sub.example.com';
var hostname_match = hostname.replace(/\./g, '\\.');

string.replace(new RegExp('https\:\/\/'+hostname_match+'\/(.*)', 'g'), '/$1');

我想要得到以下内容:

/dir/ /dir/v2.5/

2 个答案:

答案 0 :(得分:1)

您只需替换http:// + hostname

var string = 'https://sub.example.com/dir/ https://sub.example.com/dir/v2.5/'
var hostname = 'sub.example.com';

let urls = string.split(' ')
.map(u => u.replace('https://'+hostname, ''))

console.log(urls)

// if you want a space-separated string:
console.log(urls.join(' '))

答案 1 :(得分:0)

您可以使用

new RegExp('https://'+hostname_match+'/(\\S*)', 'g')

在这里,.*\S*替换为零个或多个非空白字符。

请参阅JS演示

var string = 'https://sub.example.com/dir/ https://sub.example.com/dir/v2.5/'
var hostname = 'sub.example.com';
var hostname_match = hostname.replace(/\./g, '\\.');
console.log(
  string.replace(new RegExp('https://'+hostname_match+'/(\\S*)', 'g'), '/$1')
);

请注意,由于/不是特殊的正则表达式元字符,因此您无需在构造函数表示法中转义正斜杠。在任何正则表达式上下文中都不必转义冒号。