我有字符串
action = 'http://moskva.test.ru'
和varidable
domain = "kiev"
我需要使用正则表达式将'moskva'更改为'kiev'(因为域名将被更改)
我试试这个
action = action.replace(/(?:http|https)\:\/\/(.*)\..*/, domain)
但是这会将所有字符串更改为 kiev ,而不仅仅是需要部分
答案 0 :(得分:0)
您需要捕捉想要保留的内容,并且只匹配您需要替换的内容:
var action = 'http://moskva.test.ru';
var domain = "kiev";
action = action.replace(/((?:http|https)\:\/\/)[^.]*(\S*)/, "$1"+domain+"$2");
console.log(action);
从问题中不清楚您是否将网址作为独立字符串,因此我将最终.*
替换为\S*
。
详细:
((?:http|https)\:\/\/)
- 将使用替换模式中的$1
反向引用引用的第1组[^.]*
- 除.
(\S*)
- 第2组将匹配零个或多个非空格字符(您的.*
将匹配除换行符之外的任何0 +字符)尽可能多。