问题如下:我想比较两个包含特殊字符'ä'的javascript字符串。其中一个字符串来自环境变量。我从第三方获得的另一个字符串。在我的localhost(Windows)上,比较按预期工作,但在生产环境服务器(ubuntu)上,比较不起作用。
在生产环境中,当我比较两个应该相等的字符串,包含'ä'字符时,结果是它们不相等。我怀疑是因为'ä'字符。
我想要的是一个不关心特殊字符的比较函数。一个比较函数,无论它是否包含'ä'字符都应该有效。我希望我使用docker,所以我可以避免这些服务器的意外。
答案 0 :(得分:2)
您可以在使用RegExp进行比较之前删除任何特殊字符:
您可以选择定义普通字符,或定义所有特殊字符。
在此代码中,我只保留字母表。
function removeSpecial(s){
return s.replace(/[^a-z0-9]/ig,'')
}
console.log(removeSpecial('abcd#@$ef')==removeSpecial('ab@@cdef')) // True
function compareSpecial(a,b){
return removeSpecial(a)==removeSpecial(b)
}
console.log(compareSpecial('abcd#@$ef','ab@@cdef')) // True
您只能删除特殊字符(您可以使用正则表达式Unicode:
function removeSpecial(s){
return s.replace(/[\u00E0-\u00F0]/ig,'')
}