2017-06-28 102 views
2

下面的代码是我的问题的最小表示。应该做些什么才能使if条件成立,以便打印IP地址匹配!如何比较2个具有相似字符的字符串?

我知道这两个字符串的编码存在问题。我正在寻找一个答案,将两个字符串转换为通过if条件的统一编码。

var ip1="127.0.0.1"; 
 
var ip2="127․0․0․1"; //127%u20240%u20240%u20241 
 
if(ip1 === ip2){ 
 
\t console.log("IP Addresses match!"); 
 
}else{ 
 
\t console.log("IP Addresses do not match!"); 
 
}

+4

又怎会不匹配? – epascarello

+0

忘记在var ip2上使用分号 –

+11

''。' !=='。'',摆脱那个unicode时期的角色。 –

回答

0

基于对意见的讨论中,我发布这个答案,它使用在“NFKD”模式正常化的功能。

var ip1="127.0.0.1"; 
 
var ip2="127․0․0․1"; //127%u20240%u20240%u20241 
 
if(ip1.normalize("NFKD") === ip2.normalize("NFKD")){ 
 
\t console.log("IP Addresses match!"); 
 
}else{ 
 
\t console.log("IP Addresses do not match!"); 
 
}

0

您可以用点替代非数字字符。

var ip1 = "127.0.0.1", 
 
    ip2 = "127․0․0․1"; 
 
    
 
ip1 = ip1.replace(/\D+/g, '.'); 
 
ip2 = ip2.replace(/\D+/g, '.'); 
 

 
if (ip1 === ip2){ 
 
    console.log("IP Addresses match!"); 
 
} else { 
 
    console.log("IP Addresses do not match!"); 
 
}