У меня была похожая проблема, когда две явно идентичные строки не были бы равны, и я вырывал свои волосы, пытаясь ее решить, поэтому я сделал это:
for (var c=0; c<string_1.length; c++) {
if (string_1.charCodeAt(c) != string_2.charCodeAt(c)) {
alert('c:'+c+' '+string_1.charCodeAt(c)+'!='+string_2.charCodeAt(c));
valid = false;
}
}
И я обнаружил, что последний символ в одной строке был 10, а последний символ в другой был 13, я думал, что обе строки были нулевыми, но это не так.