用regexp替换字符串部分

时间:2016-08-24 12:15:35

标签: regex

我有字符串

action = 'http://moskva.test.ru'

和varidable

domain = "kiev"

我需要使用正则表达式将'moskva'更改为'kiev'(因为域名将被更改)

我试试这个

action = action.replace(/(?:http|https)\:\/\/(.*)\..*/, domain)

但是这会将所有字符串更改为 kiev ,而不仅仅是需要部分

1 个答案:

答案 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 +字符)尽可能多。