diff --git a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/refresh/AddressManager.java b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/refresh/AddressManager.java
index 8851c95..e782e05 100644
--- a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/refresh/AddressManager.java
+++ b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/refresh/AddressManager.java
@@ -20,6 +20,7 @@
 import java.io.IOException;
 import java.net.InetSocketAddress;
 import java.net.Socket;
+import java.net.URI;
 import java.util.List;
 
 import org.apache.commons.lang3.StringUtils;
@@ -36,7 +37,7 @@
 public class AddressManager extends AbstractAddressManager {
   private static final Logger LOGGER = LoggerFactory.getLogger(AddressManager.class);
 
-  private static final String URI_SPLIT = ":";
+  private static final String URI_PREFIX = "rest://";
 
   public AddressManager(List<String> addresses, EventBus eventBus) {
     super(addresses);
@@ -65,8 +66,8 @@
   }
 
   private IpPort transformIpPort(String address) {
-    String[] result = StringUtils.split(address, URI_SPLIT);
-    return new IpPort(result[0], Integer.valueOf(result[1]));
+    URI uri = URI.create(URI_PREFIX + address);
+    return new IpPort(uri.getHost(), uri.getPort());
   }
 
   @Subscribe
diff --git a/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/refresh/AddressManagerTest.java b/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/refresh/AddressManagerTest.java
index a81a56c..9263e1b 100644
--- a/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/refresh/AddressManagerTest.java
+++ b/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/refresh/AddressManagerTest.java
@@ -23,6 +23,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.servicecomb.foundation.common.event.EventManager;
 import org.apache.servicecomb.foundation.common.net.IpPort;
 import org.apache.servicecomb.http.client.event.RefreshEndpointEvent;
 import org.junit.Assert;
@@ -80,4 +81,23 @@
     List<String> availableRegion = Deencapsulation.getField(addressManager1, "availableRegion");
     Assert.assertEquals("127.0.0.4:30100", availableRegion.get(0));
   }
+
+  @Test
+  public void addressIPV6Test() {
+    List<String> addressAZ = new ArrayList<>();
+    addressAZ.add("rest://[2008::7:957f:b2d6:1af4:a1f8]:30100");
+    Map<String, List<String>> zoneAndRegion = new HashMap<>();
+    zoneAndRegion.put("sameZone", addressAZ);
+    zoneAndRegion.put("sameRegion", new ArrayList<>());
+    addressManager1 = new AddressManager(addresses, EventManager.getEventBus());
+    RefreshEndpointEvent event = new RefreshEndpointEvent(zoneAndRegion, "SERVICECENTER");
+    addressManager1.refreshEndpoint(event, "SERVICECENTER");
+
+    List<String> availableZone = Deencapsulation.getField(addressManager1, "availableZone");
+    Assert.assertEquals("[2008::7:957f:b2d6:1af4:a1f8]:30100", availableZone.get(0));
+
+    IpPort ipPort = addressManager1.getAvailableIpPort();
+    Assert.assertEquals("[2008::7:957f:b2d6:1af4:a1f8]", ipPort.getHostOrIp());
+    Assert.assertEquals(30100, ipPort.getPort());
+  }
 }
\ No newline at end of file
